このページの内容について
このページは、VBAエキスパート(ExcelVBAスタンダード)試験合格講座の第二回記事です。公式テキスト第2章「変数」と第3章「ステートメント」の内容について解説します。自分でも手を動かしながら読み進めてください。1時間の講義でお話する程度の分量です。主に講座受講者の復習での利用を想定しています。
オブジェクト変数
オブジェクト変数とは
変数はプログラムの実行中にデータを格納しておくことができます。ベーシックまでの内容では主に文字列や数値といった「値」を格納する変数を使用してきましたが、変数には「オブジェクト」を格納することもできます。ベーシックで学習した内容は「変数と定数」を参照。
オブジェクト変数の宣言と代入
宣言の方法はこれまでの変数の宣言と変わりはありません。しかし、オブジェクトの代入は「Set」という命令を使用します。
サンプルコード(クリックでコピー)
Private Sub ObjectVariable()
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Set wb = ThisWorkbook
Set ws = wb.Worksheets(1)
Set rng = ws.Range("A1")
rng.Value = "ExcelVBA"
End Sub
実行結果
上記サンプルコードは「ThisWorkbook」をオブジェクト変数「wb」に格納、ThisWorkbookのシート(左から)1番目を「ws」に格納、ThisWorkbookのシート1番目のセルA1を「rng」に格納し「rng」のValueプロパティに文字列「ExcelVBA」を設定します。
オブジェクト変数の初期値
変数には変数の型に応じた初期値が設定されています。「変数の初期値」を参照。オブジェクト変数の初期値は「Nothing」という特別な値が設定されています。また、オブジェクト変数に初期値が格納されているかどうかは「=」ではなく「Is」を使用して判定します。
サンプルコード(クリックでコピー)
Private Sub ObjectInitialize()
Dim wb As Workbook
Debug.Print wb Is Nothing
Set wb = ThisWorkbook
Debug.Print wb Is ThisWorkbook
End Sub
実行結果
上記サンプルコードは「wb」というWorkbook型のオブジェクト変数を宣言し、オブジェクトを代入する前に「wb」が初期値(Nothing)かどうかを判定し、イミディエイトウィンドウに出力します。続いて「wb」にThisWorkbookを代入し「wb」とThisWorkbookを比較し、結果をイミディエイトウィンドウに出力します。いずれも「True」が出力されます。
Comment