【Excel VBA】今開いているシートを取得する方法【ActiveSheet】

Excel
スポンサーリンク

今回は今現在開いているシートを取得する方法を紹介したいと思います。

VBAに関する記事を不定期で投稿していますので、是非こちらも併せてご覧ください!

スポンサーリンク

今開いているシートを取得する方法

今開いているシートを取得するには、ActiveSheetプロパティを使用します。名前の通り、現在アクティブになっている(選択中の)シートを取得することが出来ます。

実際に挙動を見た方が分かりやすいと思うので、サンプルコードを用意しました。標準モジュールに貼り付けた後、任意のシートを開いた状態で実行してみてください。

Sub test_ActiveSheet()

    MsgBox "現在" & ActiveSheet.Name & "を開いています。"
    
End Sub

実行するとメッセージボックスに開いているシート名が表示されます。

今開いているシートを取得する方法_1
スポンサーリンク

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

また、IF文を使用して「このシートがアクティブでないなら実行させない」といった感じで先に判定しておくのもいいと思います。

'Sheet2がアクティブでないなら処理を終了する。
If ActiveSheet.Name <> "Sheet2" Then
    MsgBox "Sheet2が開かれていない為、処理を終了します。"
    Exit Sub
End If
ActiveSheetの注意点_2
スポンサーリンク

まとめ

今回は今現在開いているシートを取得する方法を紹介しました。

ActiveSheetプロパティを使用する際は、

  • 取得したいシートがアクティブになっているか(開いているか)
  • マクロの処理中に選択シートが変わる場合は先に変数に格納しておく

の2点を注意して使用するようにしましょう。

コメント

タイトルとURLをコピーしました