Sub test1()
Dim w As Worksheet
Set w = Worksheets("sheet1")
If w Is Worksheets("sheet1") Then
Debug.Print "同じです"
Else
Debug.Print "違います"
End If
If w Is Worksheets("sheet2") Then
Debug.Print "同じです"
Else
Debug.Print "違います"
End If
If w Is Nothing Then
Debug.Print "同じです"
Else
Debug.Print "違います"
End If
End Sub
Sub test2()
Dim w As Worksheet
If w Is Worksheets("sheet1") Then
Debug.Print "同じです"
Else
Debug.Print "違います"
End If
End Sub
仲村 修治さんの投稿
(投稿ID: 771)
完成形のマクロで以下のif文について解説していただけると幸いです。
あまり見たことのないif文なのでよろしお願いします。
If Not r Is Nothing Then
''''''''''''''''
Else
''''''''''''''''
End If
小川 慶一さんのコメント
(コメントID: 1665)
お返事遅れました。
発展編(仲村さんの受講同時の速習コース2日目)で扱った内容ではあります。
not, is, nothing のどれについてひっかかっていますか?
仲村 修治さんのコメント
(コメントID: 1679)
わざわざの電話ありがとうございます。
突然の電話でビックリしました。
いまは忙しくてじっくり確認できませんが、通勤時はできるだけ動画を見るようにしています。
下段の件はもう一度確認してみます。
小川 慶一さんのコメント
(コメントID: 1683)
それではお待ちしています。
※僕からの問い合わせは、「どれについてひっかかっていますか」だけです。
小川 慶一さんのコメント
(コメントID: 1697)
「ひっかかっているのは、 Is と Nothing についてだ」ということなので。
Is 演算子は、比較演算子です。
つまり、 if hensu > 3 then とかいうときの「 > 」と同じ仲間です。
ただし、比較対象たる左辺、右辺とも、数字や文字、日付などのデータではなく、オブジェクトになります。
左辺で示されるオブジェクトと右辺で示されるオブジェクトが同じものなら True 、そうでなければ False という戻り値が得られます。
Nothing は、オブジェクト型の変数の初期値にもなっていますが、要は、「特にどのオブジェクトも示していない」という状態。
以下、表示しているエクセルファイルに、 sheet1, sheet2 という2枚のシートがあるという前提で。
どうなるか予測してから試してみてください。
仲村 修治さんのコメント
(コメントID: 1700)
ありがとうございます。すっきりしました。