【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
   
基礎解説
チェック式 WSH入門 第2回

1.MsgBox関数を使って文字列を表示する

Microsoft MVP
Visual Developer - Scripting
牟田口 大介
2006/07/06
Page1 Page2 Page3

PCにせりふをしゃべらせる

 まずはPCに何かせりふをしゃべらせてみよう。ここでは「ただの人間に興味はありません。」というせりふを表示させてみることにする。次のようなコードを考えよう。

Dim x
x = "ただの人間に興味はありません。"
MsgBox x

 例えばmessage.vbsと名前を付けてファイルに保存し、このスクリプトを実行すると(実行方法については前回参照)、次のようなダイアログ(メッセージ・ボックス)が表示される。

文字列を表示したメッセージ・ボックス
指定した文字列が表示された「OK」ボタン付きのダイアログ(メッセージ・ボックス)が表示される。

 このスクリプトが何をしているのかを詳しく説明しよう。

 まず1行目で、「Dim<半角スペース>x」と記述することで、xという名前の「変数」を作成(宣言)している。変数とは、中にモノ(値)を自由に出し入れすることができる箱のようなものである。ここでは空の箱を用意していることになる。この行をDim文(Dimステートメント)という。この変数名のように、VBScriptでは、文字列以外は基本的に英数字と半角記号文字だけで記述するので間違えないようにしよう。付け加えておくと、VBScriptには大文字・小文字の区別はないので、dim Xなどと書いても同じことである。ちなみにDimは、「次元(配列)」を意味するDimensionという英単語の略である。VBScriptのキーワードは英単語が基になっているものが多い。

変数の概念図
変数は値を自由に出し入れできる箱のようなものである。この変数に名前を付けて、その名前でスクリプトからアクセス(値の読み書き)が行える。変数に値を入れる(セットする)ことを「代入」といい、値を取り出すことを「参照」という。

 このxという変数に、=(イコール、代入演算子という)を用いて「ただの人間に興味はありません。」という文字列を入れる(代入する)のが2行目である。VBScriptでは、文字列(正式には「文字列リテラル」という)は" "(ダブル・クオーテーション)でくくるルールがあるので覚えよう。ここで「x = "ただの人間に興味はありません。"」とは、数学の方程式のように、「xの内容が"ただの人間に興味はありません。"と等しい」という意味ではないことに注意していただきたい。数学の =(イコール)とは意味が違い、「xに"ただの人間に興味はありません。"を代入する」という意味なのだ。なお、=の前後の半角スペースは省略可能である。

 そしてメッセージ・ボックスとしてxという変数の中身を表示させているのが3行目である。ここではVBScriptのMsgBox関数を用いている。関数とは、ある処理を行い、その結果を返すための装置だと思えばよい。MsgBox関数は、与えた文字列(与える値のことを引数(ひきすう)という)をメッセージ・ボックスとして表示させる関数なので、このような結果になる。

 このように、VBScriptは1つ1つの命令(文、もしくはステートメントという)を改行で区切って記述するのが基本である。

 実をいえば、1行目のような変数宣言はVBScriptにおいては必須ではない。つまりこうも記述できるということだ。

x = "ただの人間に興味はありません。"
MsgBox x

 Dimであらかじめxを宣言しなくても、変数xへの代入が発生した時点(上記1行目)で、VBScriptが自動的に変数xの箱を作ってくれるのだ。

 ただし、1行減るのでラクなように見えるが、ここで手抜きをすると、変数を何個も使うような複雑なスクリプトを記述するときに、どんな変数を使っているのか分からなくなったり、タイプミスによって本来とは違う変数に値を代入してしまったりする危険がある。後々面倒なミスにつながりやすいので、いつも指定する癖を付けておいた方がよい。なお、行頭に「Option Explicit」と記述すると、宣言していない変数を使おうとするとエラーが発生するのでよりミスを見つけやすくなる。Explicitは「明示的な」という意味で、以後の暗黙の変数定義を許可しないという意味である。

Option Explicit
x = "ただの人間に興味はありません。"
MsgBox x

 このように、Option Explicitを指定しているにもかかわらず、Dim xを省略したスクリプトを実行すると、エラーが発生し、次のようなダイアログが表示されてスクリプトの実行が停止される。

変数が宣言されていない場合のエラー
Option Explicitを指定したにもかかわらず、宣言されていない変数を使おうとするとエラーが発生する。

 以後本稿では、常にOption Explicitを指定することにする。

 では、上記のスクリプトをエラーが表示されないように実行するにはどうすればいいだろうか。次のコードは一部分が隠されているがクリックすると正解が表示される仕組みになっている(これが本稿が「チェック式」と名乗るゆえんだ)。答えを考えてから、目隠し部分をクリックして、正解を確認してもらいたい。

マーカーで隠れたところを、1つずつクリックしてチェックしてみよう。 マーカーで隠れたところを、1つずつクリックしてチェックしてみよう。
Option Explicit
MsgBox x

 なお、ここでは説明のために変数を使ったが、変数の宣言と代入を省略し、文字列をそのままMsgBox関数の引数に指定することも可能である。

MsgBox "ただの人間に興味はありません。"

複数行を表示させる

 前出の例は1行だけの表示だったが、複数行をメッセージ・ボックスで表示させたいときは、次のようにすればよい。

Option Explicit
Dim x
x = "ただの人間に興味はありません。" & vbCrLf
x = x & "この中にデベロッパー、アーキテクト、IT Proがいたら、" & vbCrLf
x = x & "私のところに来なさい。以上。"
MsgBox x

 2行目の変数宣言は同じだが、3行目で改行文字(vbCrLf)を加えている。vbCrLfは改行文字を示す「定数」(ある定まった値を示すもの)であり、VBScriptにあらかじめいくつか定義されている定数の1つである(なお、定数は自分で定義することもできる。それについては次回で述べる)。「ただの人間に興味はありません。」という文字列と改行文字を&(これを文字列連結演算子という)でつなぐと、お尻に改行文字がくっついた文字列がxに代入される。

改行文字がくっついた文字列
vbCrLfを文字列の最後に連結することで、改行文字が挿入される。

 4行目では、3行目で代入した文字列にさらに別の文字列を連結している。=の両側に同じxという変数があるが、右側のxは3行目の内容、左側のxは、3行目の内容と4行目で付け加えられる内容をつないだものが代入されることに注意してもらいたい。5行目も同様である。

変数xに最終的に代入される文字列
3〜5行目の文字列がすべて連結されて変数xに代入される。

 このスクリプトを実行すると、このように改行付きで文字列が表示される。

改行を含んだ文字列の表示
このように改行付きの文字列を表示することもできる。

 なおこのスクリプトでも、次のようにすれば変数を使わずに表示することも可能だ。

MsgBox "ただの人間に興味はありません。" & vbCrLf & "この中にデベロッパー、アーキテクト、IT Proがいたら、"  & vbCrLf & "私のところに来なさい。以上。"

 ただしこれだと1行が長すぎるので、そういうときのために次のように行を分けて書くことができる。

MsgBox "ただの人間に興味はありません。" & vbCrLf & _
"この中にデベロッパー、アーキテクト、IT Proがいたら、"  & vbCrLf & _
"私のところに来なさい。以上。"

 このようにVBScriptでは、半角スペースと_(アンダースコア)を行末に書くことで、単一文を複数行に分けて書くことが可能だ。

 以上のように、MsgBox関数を使えば、指定した文字列を表示できることがお分かりいただけたと思う。


 INDEX
  [基礎解説]チェック式 WSH入門
  第2回 VBScriptの基本を押さえよう(その1) 文字列の入出力
  1.MsgBox関数を使って文字列を表示する
    2.InputBox関数を使って文字列を入力する
 
 基礎解説

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?