VBA(Visual Basic for Applications)において、Worksheet(ワークシート)オブジェクトは、Excel のワークブック(Workbook)内に存在する各シートを操作するための中核的なオブジェクトです。VBA を用いた自動処理では、セルの操作、データの入力、表示設定の変更など、ほぼすべての処理が Worksheet オブジェクトを介して行われます。
■ Worksheet オブジェクトとは?
Worksheet オブジェクトは、Excel の各シートを表します。Excel ファイル(Workbook)の中には複数のシートが含まれますが、その 1 枚 1 枚が Worksheet オブジェクトです。
ワークシートには、セル、行、列、図形、グラフ、名前定義など多くの要素が含まれます。VBA でワークシートを操作することで、データの入力・取得・加工・出力が可能になります。
■ Worksheet オブジェクトへのアクセス方法
● 1. 現在アクティブなシートを参照
Dim ws As Worksheet
Set ws = ActiveSheet
● 2. シート名で指定
Set ws = Worksheets("売上集計")
● 3. インデックス番号で指定
Set ws = Worksheets(1) ' 一番左のシート
● 4. ワークブックを指定してからシートを取得
Set ws = Workbooks("データ.xlsx").Worksheets("Sheet1")
■ 主なプロパティ
● Name(シート名)
MsgBox Worksheets(1).Name
● Visible(表示・非表示)
Worksheets("Sheet2").Visible = xlSheetVeryHidden ' 完全非表示
● Cells(セルの範囲)
Worksheets("Sheet1").Cells(1, 1).Value = "A1の値"
● Range(指定範囲)
Worksheets("Sheet1").Range("B2").Value = 100
● UsedRange(使用されている範囲)
MsgBox Worksheets("Sheet1").UsedRange.Address
■ 主なメソッド
● Activate(アクティブ化)
Worksheets("Sheet3").Activate
● Select(選択状態にする)
Worksheets("Sheet1").Select
● Copy(コピー)
Worksheets("Sheet1").Copy After:=Worksheets("Sheet3")
● Delete(削除)
Application.DisplayAlerts = False ' 確認メッセージを無効化
Worksheets("Sheet2").Delete
Application.DisplayAlerts = True
● Move(移動)
Worksheets("Sheet1").Move Before:=Worksheets(1)
■ Worksheet イベント(イベントプロシージャ)
Worksheet に関連付けられるイベントを使用することで、ユーザー操作に応じて自動的に処理を実行できます。
イベントは「該当シートのコードウィンドウ」に記述します(例:Sheet1 モジュール)。
● 代表的なイベント
Worksheet_Change:セルの内容が変更されたとき
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "セル " & Target.Address & " が変更されました"
End Sub
Worksheet_SelectionChange:セル選択が変更されたとき
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1").Interior.Color = RGB(255, 255, 0)
End Sub
Worksheet_Activate:シートがアクティブになったとき
Private Sub Worksheet_Activate()
MsgBox "このシートがアクティブになりました"
End Sub
■ Worksheet の活用例
● 1. データを自動で挿入
Sub InsertData()
Dim ws As Worksheet
Set ws = Worksheets("データ入力")
ws.Range("A1").Value = "社員番号"
ws.Range("B1").Value = "氏名"
End Sub
● 2. 行ごとに背景色を変更
Sub ColorRows()
Dim ws As Worksheet
Set ws = Worksheets("データ")
Dim i As Long
For i = 2 To ws.UsedRange.Rows.Count
If i Mod 2 = 0 Then
ws.Rows(i).Interior.Color = RGB(240, 240, 240)
End If
Next i
End Sub
● 3. 複数のシートを一括で非表示
Sub HideSheets()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "メイン" Then
ws.Visible = xlSheetHidden
End If
Next ws
End Sub
■ よく使う定数
定数名 | 内容 |
---|---|
xlSheetVisible | 表示 |
xlSheetHidden | 通常の非表示 |
xlSheetVeryHidden | 完全な非表示 |
※ VeryHidden
状態は、VBE でしか再表示できません。
■ 注意点とベストプラクティス
- Worksheets(“名前”) は正確なシート名が必要。不一致だとエラーになります。
- UsedRange は目に見えない空白セルを含むことがあります。事前に範囲を明確にしましょう。
- シート削除や移動時には
Application.DisplayAlerts
を使って、確認メッセージを制御するのが安全です。 - シート操作をループ処理する際は
For Each ws In Worksheets
が便利です。
■ まとめ
項目 | 内容 |
---|---|
オブジェクト名 | Worksheet(ワークシート) |
主な機能 | セル操作、書式設定、イベント処理、データ編集など |
アクセス方法 | Worksheets("名前") , Worksheets(番号) , ActiveSheet , ThisWorkbook.Worksheets("名前") |
主要プロパティ | Name , Visible , Cells , Range , UsedRange など |
主なメソッド | Activate , Select , Copy , Delete , Move など |
イベント例 | Worksheet_Change , Worksheet_Activate , Worksheet_SelectionChange など |
活用例 | データ自動入力、条件付き書式、シートの動的生成・削除、帳票出力、ユーザー操作に応じた処理の自動化など |