ExcelVBA 特定のワークシートを明示的に指定して操作する3つの方法

 

ExcelVBA  特定のワークシートを明示的に指定して操作することで、意図しないシートの編集を防ぐ。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

Excel VBA 特定のワークシートを明示的に指定|シーン

以下のシーンで利用します。

1.特定のシートのデータを編集・参照したい。

2.複数のシートを切り替えて処理したい。

3.シート名の変更によるエラーを防ぐため、インデックスやコード名を使いたい。

 

Excel VBA 特定のワークシートを明示的に指定|使い方と注意点

ワークシートの指定方法

1. シート名で指定( Sheets("Sheet1") または Worksheets("Sheet1") )

2. インデックス番号で指定( Sheets(1) )

3. コードネームで指定( Sheet1 )

Sheets() と Worksheets() の違い

・Sheets() は グラフシートも含む

・Worksheets() は ワークシートのみ

シート名は変更されるとエラーになるため、コードネームを使うと安全

 

Excel VBA 特定のワークシートを明示的に指定|サンプルコード

Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

標準モジュール(シート名で指定)指定シートをアクティブにします。シート名が変わるとエラーになります。

Option Explicit

Sub SelectSheetByName()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' "Sheet1" を指定(名前変更に注意)
    ws.Activate
End Sub

標準モジュール(インデックス番号で指定)ブック内の並び順でシートを指定します。シートの並びが変わると別のシートが選ばれます。

Option Explicit

Sub SelectSheetByIndex()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1) ' 1番目のシートを指定
    ws.Activate
End Sub

標準モジュール(コードネームで指定)シート名を変更してもエラーになりません。

Option Explicit

Sub SelectSheetByCodeName()
    Sheet1.Activate ' VBEのプロジェクトでのコードネームを指定
End Sub

標準モジュール(シートを作成・選択)新しいシートを作成してアクティブにします。

Option Explicit

Sub CreateAndSelectSheet()
    Dim ws As Worksheet
    ' 新しいシートを追加
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "NewSheet"
    ws.Activate
End Sub

標準モジュール(シートが存在するか確認)エラーを防いで安全にシートを確認します。

Option Explicit

Function SheetExists(sheetName As String) As Boolean
    Dim ws As Worksheet
    On Error Resume Next
    Set ws = ThisWorkbook.Sheets(sheetName)
    SheetExists = Not ws Is Nothing
    On Error GoTo 0
End Function

Sub CheckSheet()
    If SheetExists("Sheet1") Then
        MsgBox "シートが存在します!"
    Else
        MsgBox "シートが見つかりません!"
    End If
End Sub

 

Excel VBA 特定のワークシートを明示的に指定|まとめ

指定方法 コード メリット デメリット
シート名 Sheets("Sheet1") 直感的にわかりやすい 名前変更でエラー
インデックス Sheets(1) 簡単に取得可能 並び順変更で別シートを選ぶ
コードネーム Sheet1 名前変更でもエラーなし VBEで設定が必要

基本はコードネームを使うのが安全。シート名が変わる可能性があるなら、 SheetExists で確認します。

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。