コンテンツにスキップ

Visual Basic for Applications/基本的な文法

出典: フリー教科書『ウィキブックス(Wikibooks)』

基本的な文法

[編集]

メッセージボックスの表示

[編集]

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

なお、2023年の時点での新しいexcel(office 2021準拠)には、rem文などは書いておらず、空白であった。

だが、windowsの office2021用 EXCEL でも引き続き REM を使えるので、初期状態のちがいは気にしなくていい。

windowsのoffice 2021 excel の場合、このウィンドウにvbaのプログラム文を入力していくことになる。


プログラム例
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マクロを保存できない。)