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

 

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

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

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

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

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

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

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

 

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

ワークシートの指定方法

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

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

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

Sheets() と Worksheets() の違い

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

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

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

 

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

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

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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

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

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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

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

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エキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問