Visual Basic for Applications/基本的な文法

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

基本的な文法[編集]

メッセージボックスの表示[編集]

まず、Microsoft Excel でも LibreOffice でもマクロを立ち上げた時点では、コードには、下記のように書いてある。(Excel の場合、1行目の「REM ***** BASIC *****」が無い場合もあるが、あとは初期状態は同じである。)

EXCEL でも REM を使えるので、初期状態のちがいは気にしなくていい。


REM  *****  BASIC  *****

Sub Main

End Sub

とりあえず、初心者プログラマーは通常、行「Sub Main」から行「End Sub」のあいだに、追加したい処理を記述すればいい。

「End Sub」はプログラムの終了を意味するので、この後ろに命令を記述する必要は無い。それどころか、「End Sub」以降にコードを書くと、基本的にエラーになる。


では、とりあえず「 Hello, World! 」と文章を表示するプログラムを書いてみよう。

REM  *****  BASIC  *****

Sub Main
  MsgBox("Hello, World!")
End Sub


解説
MsgBox("表示したい文字列")

とは、新規の専用のメッセージウィンドウを表示し、そのウィンドウにコードで指定した、表示したい文字列が書かれる命令のことである。Visual Basic にも同様の命令がある。

注意

MsgBox("Hello, World!")の左のスペースは、必ず半角英数スペースのこと。全角だとエラーになる。

VBAにかぎらず、一般的なプログラミング言語では、引用符 " " の内部以外で、コード中に全角を使うとエラーになる。


実行方法

さて、上記のコードを書いただけでは、まだ何も実行しない。一般にプログラミング言語では、コードを書いただけでは、まだ何も実行されない。別途、実行命令をコンピュータに与える必要がある。

マクロBasicの行動を実行するには、マクロ編集画面のウィンドウ内から実行(run)命令をする必要がある。

  • Excel

再生ボタン ▶ みたいな右向きの三角形ボタンがあるバージョンなら、それがマクロの実行コマンドなので、それを押せばマクロが実行される。


  • LibreOffice

LibreOFfcieの場合、ウィンドウ内のメニューバーにある「実行」メニューから、

実行 > 実行

をクリックすれば、上記コマンドを実行できる。Windows版でもLinux版でも、操作は同じである。


  • Apache OpenOffice

Apache OpenOffice の場合、サポート状況が悪いので、そのままの設定では動作しない。

設定が完了したと仮定して説明と、Linux における Apache OpenOffice の場合、

メニューバーの2段下あたりにあるアイコンをよく見ると、再生ボタン(右向きの緑色のヤツ ▷ )みたいなのがあるので、それを押すと、実行できる。

あるいはキーボードの「F5」ファンクションキーを押しても実行できる。


日本語の表示[編集]

さて、メッセージボックスでは英語だけでなく、日本語なども同様に表示できる。例えば、下記のようにMsgBox(" ") の中の文字列を単に日本語にするだけで、日本語の表示が出来る。

REM  *****  BASIC  *****

Sub Main
  MsgBox("こんにちは、世界")
End Sub

MsgBox のその他の機能は WindowsのVisual Basic にある同等の機能に準じたものなので、本ページではMsgBoxについてはこれ以上は深入りしない。

REM は、プログラミング用語で一般的に「コメント」というもので、REMのある行の行末までの実行を無視します。このため、REMの行には、メモ書きなどを書くことができます。REMのある行だけなら、日本語の使用もOKです。

字下げについて[編集]

MsgBpx について、他人が一目見てコードの構造を把握しやすいように、上述のコードでは字下げ(「インデント」ともいう)をしてあります。

※ 再掲

REM  *****  BASIC  *****

Sub Main
  MsgBox("こんにちは、世界")
End Sub

実は、字下げはしなくても、コードが実行可能です。

つまり、

REM  *****  BASIC  *****

Sub Main
MsgBox("こんにちは、世界")
End Sub

でも、同じ結果が得られます。

つまり、マクロBasicでは、BASIC系の言語を仕様するモードでの利用である限りは、字下げの有無によって結果は変わりません。


しかし、字下げをしないと、コードが長くなってきた時に、第三者が読みづらくなるので、なるべく字下げをするのが、プログラミング一般のマナーとして好ましいとされます。

会社などで仕事をする際は、あなただけでなく、あなたの後輩なども、あなたの書いたコードを読むので、第三者が読みやすいようにコードを書くことが望ましいとされます。

プログラミング一般のマナーについては、当wikiには他に専用のページがいくつかあるので、本ページではこれ以上は深入りしません。