教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 演算子】オブジェクトを比較(Is)するの方法が知りたいです。教えて!

f:id:m_kbou:20200417090013p:plain

ブックやワークシート等のオブジェクトを比較する方法について説明します。

 

 

構文

記述方法は以下の通りとなります。

[オブジェクト1]Is[オブジェクト2]

[説明]:

オブジェクト同士を比較します。

[オブジェクト1] 比較元のオブジェクトを記述します
[オブジェクト2] 比較先のオブジェクトを記述します

オブジェクトの比較では戻り値が返ります。
戻り値の内容は以下の通りです。

戻り値 内容
True 比較した結果が一致した場合
False 比較した結果が不一致の場合

[記述例]:

ワークシート1 Is ワークシート2

 

使い方

使い方について具体的に説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim ワークシート1 As Worksheet
  Dim ワークシート2 As Worksheet

  '↓処理②
  Set ワークシート1 = ActiveSheet
  Set ワークシート2 = Worksheets("テスト1")

  '↓処理③
  If (ワークシート1 Is ワークシート2) Then
    MsgBox "アクティブシートはテスト1です。", 64, "メッセージ"
  Else
    MsgBox "アクティブシートはテスト1ではありません。", 16, "メッセージ"
  End If

End Sub

処理の流れは以下の通りとなります。

[処理①]:変数定義
Dimによる変数定義となります。

[処理②]:変数に初期値セット
[処理①]で定義した変数:ワークシート1(オブジェクト)にアクティブなワークシート名をセットし、変数:ワークシート2(オブジェクト)にワークシート名:テスト1をセットします。

[処理③]:オブジェクトの比較
変数:ワークシート1(オブジェクト)と変数:ワークシート2(オブジェクト)を比較し、一致した場合には”アクティブシートはテスト1です。”をMsgBox表示し、一致しない場合には”アクティブシートはテスト1ではありません。”をMsgBoxで表示します。

f:id:m_kbou:20210221083447p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例①]:

①テスト1シートをアクティブにし、<実行>ボタンをクリックします。

f:id:m_kbou:20210304111901p:plain

②処理結果は以下の様になります。変数:ワークシート1(オブジェクト)にセットするアクティブシート名(Worksheets("テスト1"))と変数:ワークシート2(オブジェクト)にセットしたシート名(Worksheets("テスト1"))が一致する事から、「アクティブシートはテスト1です。」が表示されます。

f:id:m_kbou:20210304111915p:plain

実行例①についての説明は以上です。

[実行例②]:

①テスト3シートをアクティブにし、<実行>ボタンをクリックします。

f:id:m_kbou:20210304112336p:plain

②処理結果は以下の様になります。変数:ワークシート1(オブジェクト)にセットするアクティブシート名(Worksheets("テスト3"))と変数:ワークシート2(オブジェクト)にセットしたシート名(Worksheets("テスト1"))が一致しない事から、「アクティブシートはテスト1ではありません。」が表示されます。

f:id:m_kbou:20210304112350p:plain

実行例②についての説明は以上です。

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

オブジェクトを比較する方法についての説明は以上です。

 

おわりに

今回はオブジェクトを比較するIs演算子について説明しました。オブジェクトの比較は、変数に代入されているオブジェクト同士が一致している場合には処理を実行する、一致していない場合には処理を実行しない等の判断をする場合に使用します。是非有効に活用してみて下さい。