Visual Basic for Applications/基本的な文法
基本的な文法
編集メッセージボックスの表示
編集まず、LibreOffice でもマクロを立ち上げた時点では、コードには、下記のように書いてある。(Excel の場合、1行目の「REM ***** BASIC *****」が無い場合もあるが、あとは初期状態は同じである。)
なお、2023年の時点での新しいexcel(office 2021準拠)には、rem文などは書いておらず、空白であった。
だが、windowsの office2021用 EXCEL でも引き続き REM を使えるので、初期状態のちがいは気にしなくていい。
- プログラム例
REM ***** BASIC *****
Sub Main
End Sub
とりあえず、初心者プログラマーは通常、行「Sub Main」から行「End Sub」のあいだに、追加したい処理を記述すればいい。
「End Sub」はプログラムの終了を意味するので、この後ろに命令を記述する必要は無い。それどころか、「End Sub」以降にコードを書くと、基本的にエラーになる。
では、とりあえず「 Hello, World! 」と文章を表示するプログラムを書いてみよう。office 2021 excel でも libreoffice でも、下記コードは実行できる。
REM ***** BASIC *****
Sub Main
MsgBox("Hello, World!")
End Sub
- 解説
MsgBox("表示したい文字列")
とは、新規の専用のメッセージウィンドウを表示し、そのウィンドウにコードで指定した、表示したい文字列が書かれる命令のことである。Visual Basic にも同様の命令がある。
- 注意
MsgBox("Hello, World!")
の左のスペースは、必ず半角英数スペースのこと。全角だとエラーになる。
VBAにかぎらず、一般的なプログラミング言語では、引用符 " "
の内部以外で、コード中に全角を使うとエラーになる。
- 実行方法
さて、上記のコードを書いただけでは、まだ何も実行しない。一般にプログラミング言語では、コードを書いただけでは、まだ何も実行されない。別途、実行命令をコンピュータに与える必要がある。
マクロBasicの行動を実行するには、マクロ編集画面のウィンドウ内から実行(run)命令をする必要がある。
- Excel
再生ボタン ▶ みたいな右向きの三角形ボタンがあるバージョンなら、それがマクロの実行コマンドなので、それを押せばマクロが実行される。
ファンクションの F5 キーでも、マクロを実行できる。
- 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には他に専用のページがいくつかあるので、本ページではこれ以上は深入りしません。
excel マクロの保存
編集一般のexcel の保存コマンドと同様に保存すればいい。
手順そのものは
- 「ファイル」>「上書き保存」
または
- 「ファイル」>「名前をつけて保存」
である。
そもそも、その一般のexcelの保存の手順は、最近(2023年に確認)のexcel2021は下記の画像のようになっている。
ショートカットキーなどを使わない場合、面倒かもしれないが、毎回、「ファイル」で、この緑色のサイドバーが左にある状態にしてから、保存する。
保存ファイルにつける「ファイル名」の入力および「ファイルの種類」の選択のさい、
ファイルの種類を選択し、「マクロ有効ブック」(拡張子 .xlsm)にしてから「保存」をクリックすれば、保存できる。(なお、一般のブック(拡張子 .xlsx )ではvbaマクロを保存できない。)