教えて!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")

 

使い方

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

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

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で表示します。

[実行例①]:

(実行前)

※テスト1シートをアクティブにします。

f:id:m_kbou:20200410193146p:plain

(実行後)

※変数:ワークシート1(オブジェクト)にセットするアクティブシート名(Worksheets("テスト1"))と変数:ワークシート2(オブジェクト)にセットしたシート名(Worksheets("テスト1"))が一致する事から、”アクティブシートはテスト1です。”が表示されます。

f:id:m_kbou:20200410193200p:plain

[実行例②]:

(実行前)

※テスト3シートをアクティブにします。

f:id:m_kbou:20200410193211p:plain

(実行後)

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

f:id:m_kbou:20200410193228p:plain

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

 

おわりに

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