【技術記事】最短最速で学ぶ!Excel VBA入門 – 第4回:ウィンドウアプリ –

皆さん、こんにちは、
みむすたーです。

今日は、前回のオブジェクトの使い方に引き続き、
Excel VBA上のオブジェクトにまつわる話で、
お手軽に作れるウィンドウアプリの作り方を説明します。

ボタンを押すたびに押した回数を数えるアプリ、
よく交通量、通行量調査等で、よくみるカウンターをVBAで作っちゃいましょう。
↓のようなやつです。



まずは、開発タブの VIsual Basic のボタンを押して、VBEの画面を開きましょう。

下の画像の画面がVBEでしたね。
そして、今回はウィンドウアプリを作成するため、
メニューからユーザーフォームの挿入を選択しましょう。

すると、以下のようにUserForm1というウィンドウが作成されます。

次は、メニューからツールボックスを選択し、
ラベルとボタンを配置していきましょう。

ツールボックスウィンドウからラベルやボタンを選択して、
UserForm1上でマウスを左ボタンを押しっぱなしてドラッグして、
好きな大きさまで引き延ばしたらマウスの左クリックボタンを離すことで配置できます。

以下の動画のように行います。

次に配置したボタンをダブルクリックしましょう。
すると、以下の画面に移動します。

Private Sub CommandButton1_Click()の部分は、
ボタンがクリックされたときに動くプログラムになります。

少しこのコードを変更して、以下のように書いてみましょうか。

[text]Private Sub CommandButton1_Click() ‘ ボタンが押されたときに動く場所 Label1.Caption = "ボタンが押されたよ" End Sub[/text]

Label1.Captionの部分は、先ほど配置したラベル(Label1)のCaption(テキスト)という属性を意味します。
属性の意味が分からない人は、第三回のオブジェクトについて説明していますので、
そちらまで戻って理解してみてください。

Captionは、ウィンドウ上に表示されているラベルの文字の羅列です。
おそらくデフォルトで、Label1という文字の羅列が入っていると思います。

それでは、このあたりで、一度プログラムを実行してみましょうか。
すると、エクセル画面に先ほど作ったウィンドウアプリが表示されると思います。

このプログラムを実行し、配置したボタンを押すことで、
以下のように文字の羅列が変わることがわかります。

↓CommandButton1を押した後

それでは、数を数える数字を保管するためのCountという変数を作ってみよう。
作り方は、第一回で説明した変数の宣言の方法です。

そして、Label1.Captionには、Countの値を見てもらうようにしましょう。

[text]Dim Count As Integer Private Sub CommandButton1_Click() ‘ ボタンが押されたときに動く場所 Count = Count + 1 Label1.Caption = Count End Sub[/text]

ただ、ここで2つ困ったことがありますね。
最初にラベルにLabel1という名前がついていますが、実際は0を入れたいということです。
もう一つは、変数 Count は宣言したけど、最初に 0 を代入できていないということです。
そんなときは、
Private Sub UserForm_Initialize()

End Sub
というコードを書きましょう。
これは、プログラムを実行した直後に1度だけ動くプログラムです。

それでは、Private Sub UserForm_Initialize()を使って、
以下のようなコードを書いてみましょう。

[text]Dim Count As Integer Private Sub UserForm_Initialize() ‘プログラムを実行した直後に1度だけ動く場所 Count = 0 Label1.Caption = Count End Sub Private Sub CommandButton1_Click() ‘ ボタンが押されたときに動く場所 Count = Count + 1 Label1.Caption = Count End Sub[/text]

すると、ボタンを押した回数だけ、
ラベルの数字が増えていくのがわかります。

:
:
:
と、押すたびに数がどんどん増えていきます。

お疲れさまでした。
これで、カウンターの出来上がりです。

今回少し出てきましたが、Sub、End Subについては、あまり触れませんでしたが、
次回、関数の説明でお話しできればと思います。

それでは、また次回もよろしくお願いします。

コメント