今回は今現在開いているシートを取得する方法を紹介したいと思います。
VBAに関する記事を不定期で投稿していますので、是非こちらも併せてご覧ください!
今開いているシートを取得する方法
今開いているシートを取得するには、ActiveSheetプロパティを使用します。名前の通り、現在アクティブになっている(選択中の)シートを取得することが出来ます。
実際に挙動を見た方が分かりやすいと思うので、サンプルコードを用意しました。標準モジュールに貼り付けた後、任意のシートを開いた状態で実行してみてください。
Sub test_ActiveSheet()
MsgBox "現在" & ActiveSheet.Name & "を開いています。"
End Sub
実行するとメッセージボックスに開いているシート名が表示されます。
![今開いているシートを取得する方法_1](https://masashi-blog418.com/wp-content/uploads/2023/03/image-25-1024x705.png)
ActiveSheetの注意点
ActiveSheetを使う上での注意点として、開いているシートによって取得先が都度変わるというのがあります。
まぁ当たり前っちゃ当たり前なんですが、Sheet2上で実行したらSheet2の情報が取得できるし、Sheet1で実行すればSheet1の情報が取得できるので、シートが変わることによってマクロの挙動に影響が出る可能性があります。
その為、処理中に開いているシートが変わると影響が出る場合は事前に変数に格納しておくのをお勧めします。
Sub test_ActiveSheet()
Dim MySht As Worksheet
Set MySht = ActiveSheet
Worksheets("Sheet3").Activate
MsgBox "現在:" & ActiveSheet.Name & vbCrLf & _
"以前:" & MySht.Name
End Sub
![ActiveSheetの注意点_1](https://masashi-blog418.com/wp-content/uploads/2023/03/image-26.png)
また、IF文を使用して「このシートがアクティブでないなら実行させない」といった感じで先に判定しておくのもいいと思います。
'Sheet2がアクティブでないなら処理を終了する。
If ActiveSheet.Name <> "Sheet2" Then
MsgBox "Sheet2が開かれていない為、処理を終了します。"
Exit Sub
End If
![ActiveSheetの注意点_2](https://masashi-blog418.com/wp-content/uploads/2023/03/image-28.png)
まとめ
今回は今現在開いているシートを取得する方法を紹介しました。
ActiveSheetプロパティを使用する際は、
- 取得したいシートがアクティブになっているか(開いているか)
- マクロの処理中に選択シートが変わる場合は先に変数に格納しておく
の2点を注意して使用するようにしましょう。
コメント