
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エキスパート」をご確認ください。