[VBA] オブジェクト型変数 Setステートメントで格納します

 オブジェクト型変数 について解説します。

変数のデータ型⑨ オブジェクト型変数

 データ型変数として「オブジェクト型」を宣言すると、その変数はオブジェクト型変数となり、セル範囲やワークシートなどのオブジェクトを格納することができるようになります。実際にオブジェクトをオブジェクト型変数に入れるためには Set ステートメントを記述する必要があります。

固有オブジェクト型

 データ型に WorkBook や WorkSheet, Range など、オブジェクトの種類を特定して宣言された変数を 固有オブジェクト型変数 とよびます。

 'セル範囲を格納します

 Sub ObjectTest1()

  Dim myRange As Range

  Set myRange = Range("B2:D4")

  myRange.Select

 End Sub

 このマクロでは

Dim myRange As Range

によって myRange を Rangeオブジェクト変数として宣言し、

Set myRange = Range("B2:D4")

によって B2:D4 範囲のセルを myRange に格納し、

myRange.Select

によって格納されたセル範囲を選択しています。マクロを実行すると下の図のように B2:D4 範囲のセルが選択されます。

 VBAオブジェクト型変数でセル範囲を選択

 固有オブジェクト型でブックを入れる変数を宣言するときは As Workbook, シートを入れる変数を宣言するときは As Worksheet です。オブジェクト型変数を使用することの最大の利点は、オブジェクトの煩雑な記述の代わりに簡単な変数名で代用できるようになることです。またマクロ全体がすっきりと読みやすくなります。
 

総称オブジェクト型

 Workbook, Worksheet, Range のように種類を区別するのが面倒な場合は、代わりに Object という名称でオブジェクト型変数を宣言することができます。

 'セル範囲を格納します

 Sub ObjectTest2()

  Dim myRange As Object

  Set myRange = Range("B2:D4")

  myRange.Select

 End Sub

 このマクロの動作は先ほどのものと同じです。このようにオブジェクトの種類を特定せずに Object キーワードで宣言した変数を 総称オブジェクト型変数 とよびます。このような形でマクロを記述しても動作に支障はありませんが、 固有オブジェクト型で記述したほうが「どのようなオブジェクトを入れているのか」ということがひと目でわかるので、少しだけ読みやすくなると思います。

 ≫ VBA 辞典メニューに戻って他の記事も読んでね~♪

Google広告
スポンサーリンク
スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください