Hello, World!

プログラム業界の掟として、新しいプログラム言語を習うときには、「Hello world!」を表示するプログラムを作ることになっているようです。(一部誇張あり)
実用性などは関係なく、まずプログラムが動作していることを経験すると、モチベーションも多少上がるので、掟に従ってみます。

プログラム例

早速作ってみましょう
VBA の開発環境のエディタに以下のプログラムを書きます。
これを見ている方は、説明の都合上できればキーボートから入力、コピペであれば一行づつ貼り付けてください。

sub hello
	call msgbox ("Hello, World!")

入力した文字から、自動的に次のように変化しました。

Sub hello()
	Call MsgBox("Hello, World!")
End Sub 

動かして見ましょう

ともかく実行してみます。
開発画面の▶を押してみます。
どうでしょう?
“Hello,World!”と書かれたダイアログ(小窓)が出てきました。
[OK]を押すと、プログラムは終了します。

簡単でしたね。でもここには多くの基礎的なポイントが含まれているようです。

VBAエディタが教えてくれたこと

「sub hello [Enter]」
と入力すると

Sub hello()

End Sub

と、自動的に変化しました。

  • Subの一文字目が大文字になりました
  • プログラム名の後ろに()がつきました。
  • 下に「End Sub」が現れました。

これらは、VBAのエディタを使って文字を打つと、自動的に(ある程度は)VBAの約束事に合わせて修正してくれたってことみたいです。
一つずつ見ていきましょう

「End Sub」の追加

VBA では、1つのファイルの中にたくさんの小さなプログラム(VBAではプロシージャと呼びます)を書くことができます。そして実行するときには「Sub プログラム名(引数)」~「End Sub」までを1つのプログラムだと判断します。
「End Sub」がないとどこまでが1区切りなのかわからないので、自動的に、最後の目印を追加してくれたわけです。

大文字小文字変換

「sub」と入力した部分が「Sub」に変化したと思います。

VBAの個々のちいさなプログラムの区切りの「Sub」(他にFunctionもあります)は、頭は大文字と決まっているようです。
なぜ?と深く考えず、VBAというプログラム言語の決まりごとだと理解しておきます。

VBAのエディタは、これを自動的に修正してくれました。

()の追加

プログラム名(hello)の後ろに()が入りました。

VBAの個々のちいさなプログラムは、プログラムを動かすときに追加情報を渡して動作を変えることができます。
例えば「あいさつプログラム」に「朝だよ」と追加情報を与えると「おはよう」と表示、「夜だよ」と与えると「こんばんわ」と表示するようにできたりします。

それぞれのプログラムはどんな追加情報を受け取れるのかを、プログラム名の後ろの()の中に書いておくことになっています。
そしてプログラムが何も受け取れないときには「何もない」をはっきりさせるために()だけを書いておきます。

これも、VBAのエディタは自動でつけてくれます。
必要に応じて()の中に自分で追加情報を書いていくわけです。

なお、この追加情報は一般的には「引数」と呼ばれます。パラメータなんて説明されていることもあるかもしれません。
以後の説明では「引数」と呼ぶようにします。

プログラムの中身

次は中身を見ていきましょう。

call msgbox("Hello,Wrold!")

この部分も、VBAのエディタの自動補正で

Call MsgBox("Hello,Wrold!") 

に変わっていると思います。

この行の意味

この行は

「MsgBoxというプログラムを、引数として”Hello,Wrold!”を渡して呼び出す(Call)」

という意味です。(なんかそのまんまですね。)

MsgBox()

MsgBox()」はVBAに元々組み込まれているプログラムで、次のような動きをします。

  • ダイアログを開いて引数の文字と[OK]ボタンを表示する
  • [OK]ボタンを押されたら閉じる」

引数によっては、表示するボタンの数や文字を変えたり、どのボタンを押したかの情報を受け取ることもできるようです。後々試してみたいですね。

CALL

MsgBox()を呼び出すので、呼び出し命令である「Call」を最初につけています。
けれど、VBA では Call は原則として省略可能だそうで、

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

と書いても同じ動作をします。(参考書などでは省略されていることも多いようです。)

“Hello,Wrold!”の部分。

次にMsgBox()の引数部分を見ます。

引数が””にかこまれています。

“”で囲まれているのは、この部分は「文字」だよという意味ですね。

プログラムで扱う値は、数値だったり、文字だったり、他のプログラム名だったりします。
なので、「Hello,World!」という文字であることを示すために””で囲んでいます。
もし””を取って MsgBox(hello,world!)とすると、MsgBox()というプログラムからさらに「hello」というプログラム(つまり自分)を呼び出すのだと解釈してしまいます。

なお、参考書や学習サイトなどのプログラムの説明では「文字」と書くと1文字だけ、またはデータの種類が「文字」であるという意味であることが多いようです。
「Hello,Wrold!」のように、いくつもの文字がならんでいるものは「文字列」と呼びます。(たて書きでも「文字行」とは呼ばないようです。「たて書きの文字列」です。)

また1文字でも「(長さ1の)文字列」と呼ぶことも多くあるようです。

まとめ

簡単なHello World!プログラムで、次のことがわかりました。

  • VBAのエディタは、いろいろと自動補正してくれる
  • VBA のプログラム(Sub プロシージャ)は 「Sub プログラム名」で始まって「End Sub」で終わる
  • VBA のプログラムの Subは、大文字小文字にこだわる(らしい)
  • VBA のプログラムを書くときは、プログラム名の後に追加情報を入れる()をつける。追加情報がないときも()だけつける。
  • プログラムに渡す追加情報は「引数」と呼ばれる。
  • VBAのプログラムの中から、さらに別のプログラムを呼び出せる
  • プログラムの中から別のプログラムを呼び出すときは 「Call プログラム名(引数)」とするけど、CALLは省略できるので「プログラム名(引数)」だけでもオッケー
  • 文字の並んでいるものは「文字列」と呼ぶ
  • あるデータが文字列であることを表すときは””の中に文字列を入れる。
    • 0 は数値の 0
    • “0”は文字列の 0 (ASCIIコードの48)

次回は

まだ考えていませんが、VBAの四則演算とか変数というものついてとか、基本的なことをまず押さえて行きたいと思います。

コメント

タイトルとURLをコピーしました