ExcelとAccessのスキルアップをサポートするサイトです

ExcelとAccessの学習室

Excel VBAで変数を学習するコツ

「VBAを勉強しています。変数を使えるようになりたいけど、全然理解出来ません。コツを知りたいです。」

今回は、変数の学習に行き詰まっている人、過去に変数で挫折した人に向けて書きました。

この記事を書いている私は、過去に何度もVBAの学習に挑戦しては挫折してきました。

どこで挫折してきたかと言うと、繰り返し文と変数です。

今になって振り返ってみると、様々な本やサイトで書かれている変数の説明も理解出来るのですが、学習している当時は全く理解出来ませんでした

今回は、少し目先を変えて、理論などの解説はあまり行わず、感覚的に身につけるコツに特化しました。

プログラミングに挫折した人が、もう一度学習に挑戦できる助けになれれば幸いです。

変数の何が難しいのか?

初めて変数の説明を読んだ時、どのように感じましたか?

多分このようなことが難しいと感じたのではないでしょうか。

宣言をしないといけない

使う前に「宣言が必要」と言う説明文が必ず出てきますよね?

なぜ必要なのかが分からないために、学習意欲が削がれてしまいます。

「変数の宣言って何?それっておいしいの?」と感じる方も少なくないのではないでしょうか?

変数の計算が式として間違っている

例えば、i=i+1などは、今まで学校で考えてきた算数や数学とは全く違うものですよね。

iに3を入れると「3=3+1」となってしまい、式が成り立ちません。

今までの知識で理解しようとすると、早速つまずいてしまいます。

変数を知らない人はデバッグを徹底活用すべし

デバッグを活用しない方がいいと言う意見もありますが、初心者の方は、徹底して使った方が理解度は高まります。

プログラムの実行は一瞬で終わってしまいますが、ステップインを使えばコマ送りやスローモーションで動作を確認できます。

「Debug.Print」で変数に何が設定されているのかを確認することが出来ます。

下に変数のサンプルコードを入れておきますので、そのままVBEにコピペしてステップインを実行してみましょう。

Sub variable_01()

'変数の宣言
Dim i As Integer, j As Integer, st As String

j = 0
st = ""

    For i = 1 To 9 '1から9まで繰り返し
        j = j + 1
        st = st + CStr(j)
        'イミディエイトウインドウに結果表示
        Debug.Print j & ":" & st
        'ワークシートに結果表示
        Cells(i, 1).Value = j
        Cells(i, 2).Value = st
    Next i

End Sub

ここでは、iとjが数字の変数、stが文字列の変数です。

実際に実行すると、ワークシートにこのような結果が表示されます。

イミディエイトウインドウにはこのように表示されます。

デバッグについて書いた過去記事のリンクをいれておきます。

https://sys-daddy.com/excel_vba_debug/

変数の型と宣言について

変数には必ず宣言というものが必要になります。

サンプルコードの4行目にあたります。

'変数の宣言
Dim i As Integer, j As Integer, st As String

「Dim」が宣言する文で、変数iとjに「Integer(数値)」、変数stに「Strinng(文字列)」を指定しています。

「宣言」というと、その言葉だけで難しく感じてしまいます。

分かりやすく言うと、初めに変数の名前とデータ型を決めることです。

今度は「データ型」という聞き慣れない言葉が出てきましたね。

ここでデータ型についてもう少し掘り下げて説明していきます。

Excelを使ったことのある方は、ワークシートでセルの書式設定ができますよね。

書式設定の「表示形式」で、数値や日付・文字が設定できるようになっています。

データ型は、書式設定の「表示形式」と同じものと解釈して間違いありません。

初心者の方は、数字と文字列の2種類をまず身につけましょう。

他のデータ型には、日付・YesNo・オブジェクトなどもありますが、まずは数字と文字列をマスターしてから手をつけていきましょう。

変数はデータが途中で変わる

変数は、プログラムの途中で自分の好きなように、データを変えることが出来ます。

変えることが出来るので、「変数」と呼ばれるのではないでしょうか?

  • 数字を1ずつ加算する
  • 文字列の末尾に新しい文字を加える

といったことも出来ますし、全く違う数値を入れることも可能です。

数字を1ずつ加算する

数字を1ずつ加算するコードはサンプルコードの10行目になります。

j = j + 1

「j=j+1」がどうしても矛盾しているように感じますが、計算後のjは計算前のjより1大きくなる、という事になります。

jが2の場合は、次のjは3になります。

多分初心者の方がここでつまずくのではないでしょうか?

私も、過去にはこの考え方が納得できませんでしたが、デバッグ機能を活用しながらひたすら手を動かしていくことで、変数の考えを身に付けていきました

数字を加算する感覚が身に付けば、繰り返し文も深く理解できるようになります。

変数の加算と繰り返し文を思い通りに使えるようになると、セルに表形式でデータを自動入力できるようになります。

また、過去にこのようなツイートをしましたが、変数について同じような経験をされてきた方が多いようでした。

https://twitter.com/sys_dad/status/1336624781114785792

文字列の末尾に新しい文字を加える

文字を加えるコードはサンプルコードの11行目になります。

st = st + CStr(j)

ここではstにjを加えるようにしています。

st = st + j

上の文ではエラーになってしまいます。

stとjのデータ型が違うためです。

Cstr関数で変数jを文字列に変えています

文字を思い通りにつなげられれば、SQL文を使って欲しいデータを取り出す時に大きく役立ちます。

まとめ

今回は変数について、過去に自分でつまずいたところに特化して書いてみました。

VBAを習得しようとしたときに、初心者が必ずといっていいほど変数につまずきます。

しかし、頑張って習得出来れば、複雑な処理が出来るようになります。

プログラミングの経験が無いと、変数が実務で何に使えるのかイメージがつきにくいですが、業務を自動化するためには習得しておくべきことです。

更に、変数はVBA以外のプログラミング全般で使われますので、他のプログラミング言語への挑戦もしやすくなります。

これからは、働き方の変化により、テレワークを行う機会がますます増えていくでしょう。

プログラミングを習得することは、これからの世の中を乗り越える大きな武器になります。


本日もありがとうございました。