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

 

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

 

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

 

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

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

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

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

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

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

 

Excel VBA サンプルコード

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

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

標準モジュール

Option Explicit

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

・ 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

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

 

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

標準モジュール

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

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

・ 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

・ 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で自動化するコードのベースを習得したい方におすすめ!

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

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


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

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

 

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