ExcelVBA ワークシートを変数に格納して扱うことで繰返し処理に使う方法

 

ExcelVBA  ワークシートを変数として扱うことで、繰り返し処理 や コードの可読性向上、実行速度の向上 などのメリットがあります。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

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

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

 

Excel VBA ワークシートを変数に格納して扱う|シーン

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

1.特定のシートを何度も参照する

2.複数のシートを操作する

3.シート名が変更されても影響を受けにくくする

4.可読性の高いコードを書く

 

Excel VBA サンプルコード

ワークシートを変数に格納する方法

標準モジュール

Option Explicit

Sub シートを変数に設定()
    Dim ws As Worksheet
    
    ' "Sheet1" を変数 ws に格納
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' A1セルに値を入力
    ws.Range("A1").Value = "Hello, VBA!"
End Sub

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

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

・ Dim ws As Worksheet でワークシート型の変数 ws を宣言

・ Set ws = ThisWorkbook.Sheets("Sheet1") ` で  "Sheet1"  を ws に代入

・ ws.Range("A1").Value = "Hello, VBA!"  でA1セルに値を設定

 

シートのインデックスで変数に格納

標準モジュール

Option Explicit

Sub インデックスでシート指定()
    Dim ws As Worksheet
    
    ' 左から1番目のシートを指定
    Set ws = ThisWorkbook.Sheets(1)
    
    ' A1セルに値を入力
    ws.Range("A1").Value = "1番目のシート"
End Sub

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

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

・ シートの並び順が変わると 異なるシートを参照するリスクがある

 

複数のシートを変数に格納

標準モジュール

Option Explicit

Sub 複数のシートを変数に格納()
    Dim ws1 As Worksheet, ws2 As Worksheet
    
    ' Sheet1とSheet2を変数に格納
    Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Set ws2 = ThisWorkbook.Sheets("Sheet2")
    
    ' Sheet1のA1セルに"データ1"を入力
    ws1.Range("A1").Value = "データ1"
    
    ' Sheet2のB1セルに"データ2"を入力
    ws2.Range("B1").Value = "データ2"
End Sub

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

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

・ 複数のシートを指定 することで、可読性が向上

・ ws1.Range("A1").Value で `"Sheet1"` のセルに直接アクセス可能

 

ループを使って複数シートを操作

標準モジュール

Option Explicit

Sub すべてのシートにタイトルを入力()
    Dim ws As Worksheet
    
    ' ワークブック内の全シートをループ
    For Each ws In ThisWorkbook.Sheets
        ws.Range("A1").Value = ws.Name & " のデータ"
    Next ws
End Sub

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

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

・ For Each ws In ThisWorkbook.Sheets で 全シートをループ

・ ws.Name を使って 各シート名を取得し、A1セルに入力

 

注意点

1. Setを忘れない
・ Set ws = ThisWorkbook.Sheets("Sheet1") の Set を省略すると エラーになる
・ オブジェクト変数には必ず Set を使う

2. シート名の変更に注意
・ ThisWorkbook.Sheets("Sheet1") の "Sheet1" が変更されると エラーになる
・ 定数を使って管理すると良い

3. インデックス指定は慎重に
・ ThisWorkbook.Sheets(1) は 並び順が変わると異なるシートを指す ので注意

 

Excel VBAワークシートを変数に格納して扱う|まとめ

方法 使い方 特徴
シート名で指定 Set ws = ThisWorkbook.Sheets("Sheet1") 確実に指定できる
インデックスで指定 Set ws = ThisWorkbook.Sheets(1) 並び順が変わると別のシートになる
複数シートを変数に格納 Set ws1 = ThisWorkbook.Sheets("Sheet1") 異なるシートを効率的に管理
For Eachでループ処理 For Each ws In ThisWorkbook.Sheets すべてのシートを処理可能

ワークシートを変数に格納すると、コードの可読性や実行速度が向上 するので、積極的に活用しましょう。

 

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

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