ES000003_VBAエキスパート(ExcelVBAスタンダード)合格講座/第三回:オブジェクト変数

ES000003_VBAエキスパート(ExcelVBAスタンダード)合格講座/第三回:オブジェクト変数 ExcelVBA Standard

このページの内容について

このページは、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」が出力されます。

【PR】VBAエキスパート試験対策記事

当サイトでは、オデッセイコミュニケーションズ社が運営する試験であるVBAエキスパートExcel VBA ベーシックExcel VBA スタンダード)の出題範囲をベースに用語や各種関数の解説などを行っています。試験合格に向けて必須と言われる公式テキストに沿って解説をしています。受験をするか悩んでいる方、テキストとは別視点の解説を見てみたい方、受験はしないがExcelVBA(マクロ)に興味がある方へ向けた記事です。

Comment