Workin' in the Life

Workin' in the Life

IT活用により、ワークライフバランスを実現させるためのブログ

Excel VBAを速攻で覚えたい③ ~変数編~

f:id:offcourse839:20200724152114j:plain
こんにちは、こたつです。

いよいよ今回が最後の章、「変数」についてです。

Excelを操作する際、変数が使えることですごく便利になります。

ゴールは目前、早速行きましょう!


目次

変数とは

「変数」とは、値を入れる箱のようなものです。

f:id:offcourse839:20200724154956p:plain

そして「変数」という名前の通り、その箱の中の数(値)は変えていくことができます。

とりあえず実際に見ていきましょう。



まずは以下の表をExcelに貼り付けてください。(貼り付ける場所に注意してください!今回はセルA1を選択して貼り付けます)

獲得日
獲得金額(円)
7月1日
1500
7月2日
1000
7月3日
500
7月4日
3000
7月5日
1200
7月6日
2000
7月7日
900
7月8日
1500
7月9日
800
7月10日
1000
7月11日
600
7月12日
2000

こんな感じになったと思います。
f:id:offcourse839:20200723200856p:plain

ちなみにここでVBAによってやりたいことは、獲得金額が10000円を超えた日付に印をつける、ということにします。



続いて標準モジュールを開いて([ALT] + [F11] でも開ける)、新しく次のコードをコピペしてください。(気合の入った人は手入力してもらって構いません)

Sub テスト3()

Dim 金額 As Integer
金額 = 0

Range("B2").Select

Do Until 金額 >= 10000
    
    金額 = 金額 + ActiveCell.Value
    If 金額 >= 10000 Then
        ActiveCell.Offset(0, 1).Value = "10000円達成!"
    End If
    ActiveCell.Offset(1, 0).Select

Loop


End Sub

こんな感じですね。
f:id:offcourse839:20200723201216p:plain


このコードの中にある「金額」が変数となります。

解説していきましょう。

まず変数を使うためには、変数を宣言する必要があります。
Dim 金額 As Integer
これが変数の宣言です。
「Dim」と「As」は決まり文句です。

「金額」は変数名であり、「獲得金額」にしようが何にしようが構いません。

「Integer」は、その変数という箱の種類のひとつです。
その箱の種類には他に「String」などがあり、「String」は文字列を入れるための箱「Integer」は数値(整数のみ)を入れるための箱という感じです。

f:id:offcourse839:20200724154617p:plain

とりあえずはこの2つを覚えてもらえればと思います。
今回は数値を取り扱うので「Integer」にしました。

ちなみに Dim 金額 As Integer の後の 金額 = 0 によって、「金額」という箱の中に「0」という数値が入ることとなります。


では細かい説明は後にして、まず再生ボタンを押して動かしていきましょう。
f:id:offcourse839:20200723204847p:plain

はい、10000円を超えた日付に文字が入力されました。

先程のコードを解説していくと、
まず変数を宣言した後、金額 = 0 により、金額という変数に「0」という数値が入りました。

そして Do Until 金額 >= 10000 は、金額の数値が10000円以上になるまで、中の処理がループされるということです。

次の 金額 = 金額 + ActiveCell.Value ですが、数学的な考えをする理系の人にとっては違和感を感じるかもしれませんが、
これは(一週目では) 金額 = 0 + 1500 ということです。(ここの1500はセルB2の値のこと)
つまりこの時点で、「0」だった金額という変数は「1500」に入れ替えられることになります。

そして次の、
If 金額 >= 10000 Then
ActiveCell.Offset(0, 1).Value = "10000円達成!"
End If

というコードを見てもらうと、この金額が10000円以上になれば、右に「10000円達成!」という文字が入力されるようになっています。
ちなみに「10000円達成!」が"(ダブルクォーテーション)で囲まれていますが、数値ではなく文字列の場合は"(ダブルクォーテーション)で囲まなければならないというルールがあります。


そしてループの2週目では、金額 = 1500 + 1000となるので、金額は2500に入れ替えられます。(ここの1000はセルB3の値のこと)

そのように繰り返していくと、7月7日の時点で金額は10100となり、if ~ Thenステートメント内の処理が行われ、「10000円達成!」が入力されるというわけです。



以上が「変数」の説明となります。



お疲れ様です!


理解できたでしょうか?


「まあ・・・なんとなく・・・・・・」
という感じだったら十分です。

プログラミングははっきり言って難しいです。

一度やっただけで完璧に理解するのは不可能です。


何度もコードを書くことで、徐々に理解を深めていくことができます。




他にも覚えることはいくつもありますが、ここまでついてきてくれた皆さんは、VBAを理解たといっていいでしょう。

後はどんどんコードを書いて、できることを増やしていくだけです。


めざせ、VBAマスター!



f:id:offcourse839:20200724143945p:plain

おわりに

Excel VBAを速攻で覚えたい】シリーズでは、Excelの操作から、ステートメント、変数について、足早ですが一通り説明しました。
基本的にこれらのことが理解できれば、VBAの仕組みはある程度理解したということになります。

しかしVBAの世界はまだまだ奥が深いです。

  • 文字、背景色の色付け
  • Excelの保存
  • メッセージボックスの表示
  • 他のExcelの操作
  • フォルダ作成
  • AccessOutlookとの連携

などVBAによってできることはいくらでもあります。

むしろできないことはない、と思ってこれから使っていってよいと思います。

ちなみに、これから本格的にVBAを学んでいきたいという方には、下記の本をお勧めします。


実際に私もこの本で、VBAをマスターしました。
非常に丁寧でわかりやすく書かれており、Excel VBAを学ぶ王道の一冊と言っていいでしょう。

それでは、皆さんがVBAマスターになることを心から祈っています。

ここまで読んでいただきありがとうございました!