PRIMG0001
 毎週金曜日、プログラミングのちょっとした講座を記しています。
 ここでは、小学校から「プログラミング」が必須項目になってしまったため、お父さん・お母さん・おじいちゃん・おねえちゃんが子供に「プログラミング」教えることができるように、ここでこっそりと勉強してしまおうという企画です。
 今週は先週までの知識を踏まえ、いよいよ簡単なプログラムを作ってみましょう。
プログラムを始める前に、プログラムを作る画面を出さなければなりません。そのためには次のように行ってください。
 まず、エクセルを起動します。起動したらメニューの「ファイル」から「オプション」を選択します。
EXE0001
エクセルのオプションで「リボンのユーザー設定」で「開発」にチェックを入れます。
これでVBAを使用することができます。
 次にメニューの「開発」から「Visual Basic」を選択します。すると、次のような画面になります。

VBA001

 これで、プログラムを入力する画面が出てきました。もし、右側の画面が白ではなくグレーになっている場合は、左側の「Sheet1(Sheet1)」という所をダブルクリックしてください。そうすると、右側が白くなります。

 これでプログラムが入力できる画面になりました。それではここからプログラムを作ってみましょう。

 まず、本日はプログラムの最初のド定番である「Hallo word」を表示させてみましょう。っとその前に余談になりますが、なぜ、プログラムを覚えるために、一番最初に「Hallo word」なのか?というトリビアですが、1978年に発刊されたC言語の本「プログラミング言語C」に書いてあったのが初めてと言われおり、C言語作者ブライアン・カーニハンとデニス・リッチーは「UNIX」と呼ばれる、今のWindowsやMacのOSを開発した張本人です。そのため、この「Hallo word」を表示させるといったことが、プログラミングの世界に今も影響を与えているのであります。
 それはさており、さっそくこのド定番である「Hallo word」を表示させてみます。

 まずは、プログラムというのは基本一方通行、上から下へということを覚えておりますか?プログラムは上から順番に1行ずつ命令を実行します。これを覚えておいてください。

 最初に作るプログラムに名前を付けなければなりません。一番最初にプログラムの名前を入れます。VBAの場合は「Subプログラム名()」となります。また、同時にプログラムが「ここで終わりですよ
」といった標識もおかなければなりません。その命令は「End Sub」です

交通標識では

KOKOKARA

KOKOMADE

これをプログラムにすると
Sub 表示1()
End Sub
となります
この間がプログラムということになります。
 次に、メッセージBOXを表示させる命令は「 MsgBox メッセージ」です。この「メッセージ」の部分に表示させるメッセージを入れます。今回、「Hallo word」と表示させますので、

 MsgBox Hallo word となりますが、ここでちょっと待った!
 命令と文字列を区別しなければ、コンピュータはバカですので、混乱します。そこで文字列の場合は、「これは文字列ですよ~」というために文字列をダブルコーテーション(”)で囲む必要があります。ですので、


MsgBox ”Hallo word!”

となります。

これを先ほどのプログラムの領域に入れちゃいましょう。

Sub 表示1()
MsgBox ”Hallo word!”
End Sub
これで「Hallo word!」を表示させるプログラムが出来上がりました。これを入力したら「F5」キーを押してみてください。
HALLO01

  表示されました。これでプログラムを組むことができました。これを使って少し応用していきます。
 次に変数を使って表示させてみましょう。
 プログラムの中身はあとで分かりやすいように上部側に変数の定義、そして実際のプログラムの命令というしていくのが一般的です。
 まず、変数の定義は「dim as」  という命令を使います。dimの次に使う変数(なんでも良い)、asの後ろに変数のデータ型を入れます。
 前回に説明したコレです。


データ型VBA表記値の範囲
文字列型String文字列
ブール型BooleanTrue または False
バイト型Byte0から255の正の整数
整数型Integer-32,768から32,767の整数
長整数型Long-2,147,483,648から2,147,483,647の整数
単精度浮動小数点型Single-3.40282×10の38乗~3.40282×10の38
倍精度浮動小数点型Double-1.79769×10の308乗~1.79769×10の308
通貨型Currency-922,337,203,685,477.5808から922,337,203,685,477.5807
日付型Date西暦100年1月1日から西暦9999年12月31日 (日付と時刻)
オブジェクト型Objectオブジェクト参照するデータ型
バリアントVariantなんでも良い

 今回は文字を入れますので文字列の変数を定義しましょう。使用する変数を「moji01」とすると、

 dim moi01 as string
 
となります。「moji01 は文字列」といった意味です。これをプログラムに入れてしまいます
Sub 表示1()
 dim moi01 as string
End Sub

 次に、変数に「Hallo word!」の文字列を格納(変数に覚えさせる)します。格納には「=」を使いますが、ここでちょっと混乱するかもしれませんが、「=」の使い方は普通の数学の「=」の使い方と逆になるときことです。普通の数学の場合は「左」から「右」となっています。1+1は2となりますが、これを「=」で表すと、「1+1=2」ですが、プログラムの場合の「=」は「右」から「左」となります。つまり 「2=1+1」のような流れになります。
 これを踏まえて変数に「Hallo word!」を入れます。

 moji01 = "Hallo word!"
 
これもプログラムに入れましょう。

Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
End Sub
そしてメッセージボックスを表示させる命令「MsgBox」も入れます。変数の中身を表示させるには「MsgBox」の後ろに変数を指定します。つまり、

MsgBox moji01

 先ほど文字列は「”」で囲みましたが、変数はそのまま「”」で囲みません。つまり、「”」で囲まないと、プログラムは「変数」として認識します。これもプログラムに組み込みます。

Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01
End Sub

 これで「F5」を押してください。先ほどと同じ結果が得られました。なぜ、ここで変数を使った方法をご紹介したかと言いますと、この「MsgBox」はプログラムの途中の状態を確認することによく使われます。プログラムの要所に「MsgBox」を入れることによって変数の中身の確認をすることができます。これによって実際の結果が合っているかどうかの検証ができるわけです。プログラムが出来上がった場合はこの「MsgBox」が不要になりますが、その場合、命令の前に「’」を入れれば「’」の後ろ1行が注釈とみなされ、命令は実行されません。

 例えば、先ほどの「MsgBox moji01」の前に「’」を入れて「F5」を押してみてください。するとメッセージボックスは表示されないはずです。

Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
 ' MsgBox moji01  ←この部分が注釈とみなされるためプログラムでは無視される
End Sub

 では次に「Hallo word!」の次に「Hallo Japan!」を表示させてみましょう。先ほどと同じ要領で下にくっつければよいのです。

Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

End Sub

 これを入力して「F5」を押すと、先ほどの「Hallo word!」の次に「Hallo Japan!」が表示されます。

HALLO01


HALLOJPN


 これで「Hallo word!」の次に「Hallo Japan!」を表示することができました。
 ここでちょっと、先ほど「プログラムの中身はあとで分かりやすいように上部側に変数の定義、そして実際のプログラムの命令というしていくのが一般的です。」と表記しました。この整理とはどんな感じかと言いますと、次のようになります。

Sub 表示1()
 dim moi01 as string
 dim moi02 as string

 moji01 = "Hallo word!"
 moji02 = "Hallo japan!"

 MsgBox moji01
 MsgBox moji02

End Sub

これは先ほどのプログラムと同じ結果となります。(先程のプログラムは下記です)

Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

End Sub

 プログラムの整理のコツとして、変数の定義は同じところにまとめるのと、始めから分かっている変数への値の代入もまとめてしまうということです。この整理は少々今の段階では難しいかもしれません。徐々に作っていくことによって分かってきますので焦らないでください。まずは自分のスタイルでプログラムを組みましょう。

 今回はここまでです。来週は「条件」を説明していきます。