サイトについて      連絡先   検索

VBA オブジェクトを操作する

はじめに

Excel VBA マクロのオブジェクト (Object) を操作する方法を紹介します。

ワークシートなどクラスで作成されたものがオブジェクトです。

代入するには Set を頭に付けます。比較をするには Is 演算子を使用します。

  • 目次
    • 代入する
    • 比較する
    • 値型と参照型の違い

代入する

Set 変数名 = クラス名のように入力して、その変数にオブジェクトを代入します。


Dim s As Worksheet
Set s = Sheet1

Dim o As Object
Set o = Worksheets(1)

Set を忘れると「エラー 91 オブジェクト変数または With ブロック変数が設定されていません。」が発生します。

比較する

演算子」の Is 演算子を使用します。オブジェクトは = で比較できません。

演算子 演算名 使用例 結果
Is参照が等しいSheets(1) Is Sheets(1)
Sheets(1) Is Nothing
True
False
参照が等しくないNot Sheets(1) Is Sheets(2)True

何も入っていないオブジェクト型の変数を比較するには Nothing を使用します。Not を使用して参照が「等しくない」を判定できます。


Dim b As Boolean

b = (Sheets(1) Is Sheets(1))     ' 等しいか
Debug.Print(b) ' True

b = (Sheets(1) Is Sheets(2))
Debug.Print(b) ' False

b = Not (Sheets(1) Is Sheets(2)) ' 等しくないか
Debug.Print(b) ' True

Dim ws As Worksheet
b = (ws Is Nothing)              ' Nothing か
Debug.Print(b) ' True

b = (Sheets(1) = Sheets(1))      ' エラー、= で比較できない

値型と参照型の違い

オブジェクトは参照型です。それ以外の Integer や String などは値型です。参照型を別の変数に代入したり、関数の引数に渡すときに値型と違いがあります。

詳しくは「値型と参照型の違い」をご覧ください。

  • 目次
    • 代入する
    • 比較する
    • 値型と参照型の違い