オブジェクト Worksheet

Worksheet

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 など
活用例データ自動入力、条件付き書式、シートの動的生成・削除、帳票出力、ユーザー操作に応じた処理の自動化など
タイトルとURLをコピーしました