教えて!ExcelVBA!

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

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

f:id:m_kbou:20200417090013p:plain

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

 

 

構文

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

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

[説明]:

オブジェクトを比較するにはIs演算子を使用します。使い方は[オブジェクト1]Is[オブジェクト2]と記述する事で、[オブジェクト1]と[オブジェクト2]が同じか否かを判定します。内容を纏めると、「[オブジェクト1]と[オブジェクト2]を比較し、同じ場合には真「True」を返し、違う場合には偽「False」を返して下さい。」との意味になります。

[記述例]:

ActiveSheet Is Worksheets("テスト1")

 

使い方

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

[プログラミング例]:

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]:

①テスト1シートをアクティブにします。<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210304111901p:plain

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

f:id:m_kbou:20210304111915p:plain

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

[実行例2]:

①テスト3シートをアクティブにします。<実行>ボタンには上記のプログラミング例のプログラムが登録されています。<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210304112336p:plain

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

f:id:m_kbou:20210304112350p:plain

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

[サンプル]:

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

drive.google.com

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

 

おわりに

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