【VBA基礎編】変数を宣言しよう(初心者向け)

Excel VBA VBA基礎編

【VBA基礎編】変数を宣言しよう(初心者向け)

VBAを始めた人にとって最初の難関!?
なんて言われる「変数」ですが、そんなに難しい話ではないので、身構えずに読んでいただけると嬉しいです。

目次

変数と宣言

変数ってなに?

変数のイメージ

データを入れる箱に例える説明をよく見ますが、値をメモする付箋をイメージしても良いかもしれません。付箋は何枚でも用意することができて、自由に書く・消す・使いまわすことができます。
変数の宣言とはこの付箋に“名前(=変数名)”と書き込む“値の種類(=データ型)”を決めることを指します。VBAではこのように記述します。

        Dim 変数名 As データ型
        変数名 = 格納したい値

【定数(Const)について】
プログラムの実行中に格納した値を変えられる変数と違い、一度宣言した値を変えることができない定数というものがあります。
Const 変数名 As データ型 = 値

変数を使うメリット

値を扱うときは基本的に変数に格納してしまいましょう。変数を使用する大きなメリットは2つ。

  1. プログラムが見やすくなる
  2. プログラムの修正が簡単になる

プログラムに直接かかれた数字をマジックナンバーと呼びます。書いた人にしか意図が分からないものは解読に時間を要します。他人から見て読みやすいプログラムを書くためにも、変数には意味のある名前をつけることをオススメします。
変数の命名規則について

また、変数を使用せず値を直接入力した場合、修正したいときに入力した値をすべて書き換える必要がありますが、変数を使用していれば格納した値を修正するだけで済みます。

変数は必ず宣言してから使う

実は宣言をしなくても変数は使えます。ということは、変数名を間違えたまま実行してもエラーは発生しませんが、実行結果が意図しないものになってしまうことがあります。

変数の宣言を強制しておくことで、変数名を間違えて入力してもコンパイルエラーでお知らせしてくれます。VBEを起動したら[ツール]>[オプション]>[コードの設定]の中にある、「変数の宣言を強制する」にチェック!

変数の宣言を強制する

変数とデータ型

よく使うデータ型と初期値

データ型は適切なものを選びましょう。最初は、整数のLong、文字列のString、日付のDateを覚えておけば大丈夫です。

データ型 値の種類 初期値
Variant すべてのデータ型、配列 Empty直
Long -2147483648~2147483647までの整数 0
Single/Double 浮動小数点数(有効桁数の違い) 0
String 文字列 ""(空文字)
Date 西暦100年1月1日~西暦9999年12月31日
までの日付(#月/日/年#)と時刻
#0:00:00#
Boolean ブール値(TrueまたはFalse) False
Object すべてのオブジェクト型 Nothing
Range セル範囲(※オブジェクト) Nothing
Worksheet ワークシート(※オブジェクト) Nothing
Workbook ワークブック(※オブジェクト) Nothing

適切なデータ型が分からない時は、Variant(バリアント型)を指定することで、オブジェクト型を含むすべてのデータ型を格納することができますができる限り乱用は控えましょう。また、Split関数やArray関数など、Variantの指定が必要なときもあります。

値型変数と参照型変数

変数に値を格納するときは「=」を使ってコードを書くとお伝えしました。変数には単純に数字や文字を格納する「値型」と、オブジェクトの参照情報を格納する「参照型」が存在します。

  • 値(数値、文字、日付、ブール値)の場合
    変数名 = 格納したい値

  • オブジェクト(シートやブック)の場合
    Set 変数名 = 参照したいオブジェクト

オブジェクトの参照情報とはオブジェクトの場所に関する情報です。参照型変数(Object型を指定した変数)は格納したオブジェクトのコピーではなく、プログラムがオブジェクトに直接干渉するためのどこでもドアのようなものです。また参照型変数にオブジェクトの参照情報を格納するときは、Setステートメントが必要です。

    X=X+1

    さて問題です。次のコードを実行するとメッセージボックスに表示される数字はなんでしょう!

    Sub サンプル()
        Dim X As Long
        X = X + 1
        MsgBox X	'メッセージボックスにXの値を表示する
    End Sub
    

    X=X+1で困っていませんか?ここで大切なのは値の代入に使用する「=」は代入演算子といって等号ではなく「←」を意味しています。つまり右辺の計算結果を左辺に代入するということです。さらに表の初期値を見てください。右辺のXにはLongの初期値である0が入ります。

    1. X←X+1
    2. X←0+1
    3. X←1

    よって答えは「1」になります。

    変数の必要性と使い方について説明しました。変数はプログラムの可読性はもちろん、処理速度にも関わるので、頑張ってマスターしてください!


    自分の写真
    りり
    参照型変数をわかりやすく説明しようと思うと意外に難しかったです。

    QooQ