Excel VBA 入門 その6-2-3: 変数を使って実際にプログラミングしてみましょう

StockSnap / Pixabay


皆さまこんにちは!

このサイトの管理者のHide(ヒデ)と申します。

前回までのブログで、変数とは何か、また、変数の内容を更新する方法についてお伝えしました。

今回のブログでは、実際にVBEのコード画面に変数を使った簡単なプログラムを入力して動きを見ていきたいと思います。また、プログラミングの際に便利な機能である「ステップ実行」という機能についても学びます。

では、はじめましょう。

スポンサーリンク
Simplicityのレクタングル広告(大)

1. 変数を使ったプログラムを書いてみましょう

まず、下記に変数を使ったプログラムを書いてみましたのでご覧ください。この時点でプログラムの意味が分からなくても大丈夫です。プログラムは上から下に向かって命令が実行される点だけおさえておいてください。

Sub VarTest1()

Dim x As Long
Dim Result As String

x=3
Result="変数xの計算結果は"

x=x+1
x=x+5

Result=Result & x & "です。"
Debug.Print Result

End Sub

上記のプログラムについて、説明のために下記のように行番号を付けてみました。実際に入力するときは行番号は記入しませんのでご注意ください。

01. Sub VarTest1()
02.
03. Dim x As Long
04. Dim Result As String
05.
06. x=3
07. Result="変数xの計算結果は"
08.
09. x=x+1
10. x=x+5
11.
12. Result=Result & x & "です。"
13. Debug.Print Result
14.
15. End Sub

<プログラムの各行の解説>
01,15行目について:
まず、01行目にSub VarTest1() という記述がありますが、Vartest1という部分がプログラムの名前になります。01行目のように入力してEnterキーを押すと、自動的に15.行目にあるEnd Subが入力されます。これはプログラムを最後を表すものです。

02,05,08,11,14行目について:
この部分は空白行になっていますが、プログラミングではこのように自由に空白行を入れることが可能です。何も実行されませんが、プログラムを見やすくするための行とお考えください。

03,04行目について:
それぞれDimという文字で始まっていますが、このように書くことで「変数を使います」という宣言をすることになります。03行目は「xという変数名で整数を格納します」という意味になり、04行目は「Resultという変数名で文字を格納します」という意味になります。復習になりますが、変数を宣言するには下記のように記述します。

Dim 「自分で決めた変数の名前」 As 「(変数に何を入れるかという)型名」

※変数の型名とは何かについては下記のブログもご覧ください。

変数の型名について書かれたブログはこちら

変数の宣言は、一般的にプログラムの先頭(上部)で宣言します。そして、それ以降の行でその変数を利用することができます。

06,07行目について:
06行目で「x=3」、07行目で「Result="変数xの計算結果は"」となっています。これは前回のブログでも少し触れましたが、変数に数値や文字を格納するという命令になります。プログラミングでは「=」の記号がある場合、特定の場合を除いて、右辺の数値や文字を左辺の変数に格納するという意味になります。

そのため、06行目の式(命令)によって変数xの中身は「3」になり、07行目の式(命令)によって、変数Resultの中身は「変数xの計算結果は」になります。

補足その1:実は03,04行目で行った変数の宣言によって、一旦、変数xの中身は0に、変数Resultの中身は空文字(Nullとも言います)になっています。

補足その2:プログラミングでは、06,07行目のように、処理上の都合や後々の計算や処理が便利なように、変数にスタートとなる数値や文字を格納することを「変数を初期化する」と言い、またその値を初期値と言います。

補足その3:補足その1、その2に関係しますが、Excel-VBAでは、変数を宣言することで中身が0や空文字になりますが、プログラミング言語によっては内容が不定(何が入っているかわからない状態)で、初期値を0や空文字でスタートする場合でも x=0 や Result="" のようにプログラマーが自分で初期化しなければならないものもあります。

09,10行目について:
09行目,10行目ともに同じ変数xにそれぞれ「1」と「3」を加算しています。

09行目は x=x+1 という式になっています。プログラムでは、「=」の記号の右側の処理が行われ、左辺に代入される動きをします。変数xには元々「3」が入っていますので、まず右辺で「3+1」が計算され「4」という結果になります。この「4」という数値が左辺の変数xに代入されます。09行目の処理が終わった段階で変数xの内容は「4」になります。

10行目はx=x+5になっています。09行目の時点で変数xの値は「4」になっているとお伝えしました。10行目でも「=」の右辺の式が先に処理されて「4+5」が計算され「9」という結果になります。この「9」という数値が左辺の変数xに代入されます。10行目の処理が終わった段階で変数xの内容は「9」になります。

いかがでしょうか。変数xの動きをつかめましたでしょうか。このように変数xの内容は次々の新しい値に上書き(更新)されていくことに注目してください。この変数xの内容の変化はとても重要ですので下図の解説も合わせてご覧ください。

12行目について:
12行目は下記のような式になっていますね。

12. Result=Result & x & "です。"

この12行目にも「=」の記号がありますので、まず右辺が先に処理されます。まず、右辺のResultには何が入っていると思いますか? 少し上にもどってプログラムをもう一度確認してみてください。07行目で下記のように書かれています。

07. Result="変数xの計算結果は"

つまり、07行目でResultの内容は「変数xの計算結果は」になっているので、12行目の右辺のResultにはこの文字が入っています。

続いて、変数xについてです。変数xは、10行目の処理が終わった段階で変数xの内容は「9」になっているとお伝えしました。そのため、12行目の変数xには「9」が入っています。

ここまでで、12行目の変数Resultとxの内容がわかりました。

右辺には、記号「&」がありますが、これは文字を連結するという意味でした。つまり、右辺の処理結果は「変数xの計算結果は」と「9」と「です。」を連結することになるので「変数xの計算結果は9です。」という文字になります。この文字が左辺のResultに格納(上書き)され、変数Resultの内容は最終的に「変数xの計算結果は9です。」となります。

13行目について:
13行目はDebug.Printという命令で変数Resultの内容を画面(イミディエイトウィンドウ)に表示しなさいという命令になります。

ここまでで、プログラムの流れを見てきました。続いて、このプログラムを実際にVBEのコード画面に入力して動かしてみましょう。

2. 実際にプログラムを動かしてみましょう

では先ほどご説明したプログラムをVBEのコード画面に入力して動かしてみましょう。

2-1. モジュールを追加する

今回、VBEの画面で下図のように新しいモジュールを追加して、赤枠部(1番)のように名前を「Mo02_Variable」としました。(Variableは英語で変数という意味になります。)また、モジュールを追加した際に赤枠部(2番)のようにコード画面の先頭に「Option Explicit」という文字が挿入されていることを確認してください。

モジュールの作成方法や名前の変更方法については、下記のブログをご覧ください。

モジュールの作成方法について解説したブログはこちら
モジュール名の変更方法について解説したブログはこちら

2-2. プログラムを入力する

モジュールが追加できたら、下図のようにプログラムを入力してみましょう。

入力するとわかりますが、例えばx=x+1と入力した場合、Excelの方で式を見やすくするために各文字の間に自動的に半角のスペースを入れてくれます。

2-3. 1行ずつプログラムを動かしてみる

プログラムは入力できましたでしょうか。ではプログラムを動かしてみましょう。通常、プログラムの動かす場合、動かしたいプログラムの中(このプログラムであれば、Sub VarTest1() と End Sub の間)にカーソルを置いてF5キーを押します。

この方法でもよいのですが、今回はステップ実行という便利な機能を使って動かしてみたいと思います。カーソルを上記のようにプログラムの中に置いた状態でキーボードのF8キーを1回押してみてください。すると下図のように、プログラムの先頭が黄色でハイライトされました。

実は、F8キーでプログラムを1行ずつ進めることができるのです。ただ、これだけだとメリットがわかりませんね。ではさらにF8キーを1回押してみましょう。すると下図のようになります。

ここまでで、黄色のハイライトが「x = 3」の行に移りました。ここで重要な点がいくつかあります。

まず、プログラムの先頭に書かれたDimから始まる変数の宣言やスペースの部分はハイライトされませんでした。この部分はプログラムの命令の扱いではないためこのような動きになります。もう1点、黄色でハイライトされた部分はまだ実行されておらず、実行する直前であるということです。黄色のハイライトが次の行に移動した時点でその行が実行されます。この点に注意してください。

では、この状態で「x=3」の式の変数xの部分にマウスポインタを近づけてみてください。すると下図の赤枠部のように「x=0」と表示されました。そうです、このように変数にマウスポインタを近づけることで現在の変数の中身を確認することができるのです。この時点ではまだ変数xに「3」を代入する直前のため、xの内容は「0」と表示されています。

では、さらにF8キーを押して行き、黄色のハイライトが下図の箇所で止めてみましょう。F8キー押して行きながら、変数xにマウスポインタを近づけて変数xの内容の変化も追ってみてください。合わせて変数Resultにもマウスを近づけて現在の内容を確認してみてくださいね!

ここで、VBEのウィンドウの右下の「ローカル」というウィンドウを見てみてください。下図がそのウィンドウになりますが、実は、このウィンドウでも現在の変数の内容を確認することが可能です。こちらの情報もあわせて活用しましょう。

では、プログラムの最後までF8キーを押してみましょう。残りのプログラムを一気に進める場合はF5キーを押してもかまいません。すると、イミディエイトウィンドウに下図のように表示されました。

今回お伝えした、ステップ実行という機能によりプログラムに間違いがないか1行ずつ確認することが可能となります。

3. まとめ

今回は、変数を使った簡単なプログラムを作成して、その内容がどう変化するかを確認する方法について見てきました。最初うちは「変数をいつ、どのように宣言したらよいかわからない」ということもあるかもしれませんが、「何か計算をしたり、調査した結果を保持して最後にその結果を画面に表示する必要がある場合、それを保持するための数値や文字を格納できる変数を宣言する」と覚えておけばよいと思います。プログラミングをしている途中で変数が足りないことに気づいて変数の宣言を追加することもよくあることです。

今回のブログはここまでとなります。

お疲れさまでした!

ブログの続きはこちら

Excel VBA 入門 目次ページ はこちら

スポンサーリンク
Simplicityのレクタングル広告(大)
Simplicityのレクタングル広告(大)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。