
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第3回目の今回は
・VBAの変数
について解説していきますので、よろしくお願いします。
前回(第2回)はVBAの基本構文について説明をしました。
↓サブログ内部リンク(前回:VBAの基本構文↓
変数
VBAで操作を記述するとき、さまざまな処理を簡単・簡潔に記述するため、「変数」というものを利用します。変数とは、プログラムで使用する入れ物のような役割を持っています。その中に入れた変数は、プログラムの中で入替えることもできます、繰り返し処理をする場合、処理した回数管理にも使用できます。
変数の宣言
変数を使用する場合、まず「○○のデータを入れる△△の変数を使用します」と宣言します。変数の宣言する時にはDimステートメントを使って変数名と扱う「型」(データ型)を明示します。またカンマで区切って書くと、複数の変数をまとめて宣言することが可能です。
Dim 変数名 As データ型
Dim 変数名 As データ型、変数名 As データ型、変数名 As データ型
変数名
変数名は日本語でも英語でも指定できます。慣れない内は日本語で書いた方がよいかもしれません。決め事としては
① 変数名の先頭文字に数字は不可
② 「Sub」や「End」「Value」「ActiveCell」など、すでにVBAで定義されているキーワードと同じ名前は不可
③ 「_」(アンダーバー)以外の記号やスペースは使用できない。但し「_」でも先頭にくるのは不可
④ 変数名の長さは半角で255字以内
データ型の種類
変数を使用するとき、変数にどのような値をいれるかによってデータ型を使用すると、マクロの処理速度が速くなります。変数の型の定義とは、入れる値に応じて、入れる物の大きさを決めることと覚えればいいでしょう。
データ型 / 使用メモリ / 格納できる値
・プール型(Boolean) / 2バイト / True or Falseのデータ (論理数)
・バイト型(Bye) / 1バイト / 0 ~ 255の整数(小さな正の整数)
・整数型(Integer) / 2バイト / -32768 ~ 32767の整数
・長整数型(Long) / 4バイト / -2147483648 ~ 2147483647の整数 (ケタ数の大きい数値)
・通貨型(Currency) / 8バイト / -922337203685477.5808 ~ 922337203685477.5807 (ケタ数の大きい整数)
・単精度浮動小数点数型(Single) / 4バイト / -3.402823E38 ~ -1.401298E-45 (小数を含む負の値)
・単精度浮動小数点数型(Single) / 4バイト / 1.401298E-45 ~ 3.402823E38 (小数を含む正の値)
・倍精度浮動小数点数型(Double) / 8バイト / -1.79769313486231E308 ~ -4.94065645841247E-324 (負の値)
・倍精度浮動小数点数型(Double) / 8バイト / 4.9406564584124E-324 ~ 1.79769313486232E308 (正の値)
・日付型(Date) / 8バイト / 西暦100年1月1日~西暦9999年12月31日の日付、時刻のデータ
・文字列型(String) / 10バイト+文字列の長さ / 文字のデータ
・オブジェクト型(Object) / 4バイト / オブジェクトを参照するデータ
・バリアント型(Variant) / 16バイト(数値) 22バイト+文字列の長さ(文字) / 全ての値 (代入された値によって変化)
型を指定していない変数は、自動的にVariant型に設定されます。ただ適切な型に比べて入れ物の大きいため容量の無駄使いにもなり、かつエラーが出た場合にどの変数が原因かの特定が難しくなります。
構文例
A1セルに入力されている文字をSHEETの名前にするという構文を組んでみました。
構文は下記です。
実行すると、A1セルの"sample"という文字がsheet名となりました。
オブジェクト変数
オブジェクト変数とは、文字や数値などの値を入れる変数とは異なり、シートやブックなどのオブジェクトへの参照情報を格納して利用する変数のことを指します。
この変数も1項と同様に変数を宣言して、Asのあとにオブジェクトの種類を指定します。
Dim 変数名 As オブジェクトの種類
Dim 変数名 As Workbook
Dim 変数名 As Worksheet
Dim 変数名 As Range
Dim 変数名 As Object
オブジェクト変数にオブジェクトの情報を格納するには、「Set」ステートメントで記述します。
Set 変数名 = 格納するオブジェクト
またVBAでそれ以上オブジェクト変数を使わない場合は変数を解放します。
Set 変数名 = Nothing
変数をセットしたことにより、それに応じてメモリを使っているためその領域を開放する必要があります。但し、解放しなくても「End sub」によって自動的に解放されます。ただ少しでもメモリを増やす為にもセットした変数を使用しなくなった時点で、Nothingをいれてメモリを解放しましょう!⇨End subの直前にNothingを入れるのは、この理由によりあまり意味がありません(汗)
構文例
worksheet(2)のsheet名(sample2)をA1セルに入力されるような構文を組んでみました。
構文は下記です。
<実行すると、sheet名:sample2がA1セルに入力されました。

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第2回)
VBAの基本文法を理解しよう!【VBA入門講座#2】
関連
次回のVBA講座(第4回)