VBAで自動化 VBAテクニック集 VBA一覧 Withステートメント 文法・構文

【VBA】シートを指定して With ステートメントを使う方法と実践例

Excel VBA では、ワークシート(シート)に対して操作を行う場面が多い です。
このときに便利なのが、With ステートメント。オブジェクト(ここではシート)に対して、複数の操作をスッキリ記述できます。

本記事では、シートを指定して With を使用する方法 を、基礎から応用まで具体例付きで解説 します。

With を使う基本構文(シート版)

With Worksheets("Sheet1")

.Range("A1").Value = "こんにちは"
.Range("B1").Font.Bold = True

End With

📌 Worksheets("Sheet1") を対象にして、複数のプロパティ・メソッドをまとめて実行しています。
📌 .Range などのプロパティはすべて "Sheet1" シート上で実行されます。

With × Worksheets の使い方

✅ シートに値を書き込む・書式を設定する

Sub SetValuesToSheet()

With Worksheets("売上表")

.Range("A1").Value = "月"
.Range("B1").Value = "売上"
.Range("A1:B1").Font.Bold = True
.Range("A1:B1").Interior.Color = RGB(200, 200, 255)

End With

End Sub

📌 シート名 "売上表" を1回指定するだけで、複数のセルにまとめて処理できます!

【VBA】format関数:「日時・桁数・0埋め・Now」使用方法

✅With とシートオブジェクト変数の併用

オブジェクト変数を使えば、シート名の繰り返しを防ぎ、柔軟なコードが書けます。

Sub FormatSheetWithVariable()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("データ入力")

With ws

.Range("A2").Value = "商品A"
.Range("B2").Value = 1500
.Columns("B").NumberFormat = "#,##0"

End With

End Sub

📌 変数 ws を通して、コードがより読みやすく&メンテナンスしやすくなります。

✅With の中でさらにセル操作をまとめる

さらに With の中で、セルオブジェクトなどをネスト(入れ子)にしても使えます。

Sub NestedWithExample()

With Worksheets("請求書")

.Range("A1").Value = "請求書"
.Range("A1").Font.Size = 16

With .Range("A1")

.Font.Bold = True
.Font.Color = RGB(0, 0, 255)

End With

End With

End Sub

📌 .Range("A1") の中にさらに With を入れることで、複数のフォント設定を効率化できます。

【VBA】With ステートメントの中に If 文を入れる方法と活用例

✅複数シートを対象に With を使うループ

For Each を使って 複数のシートを順番に処理する場合 にも、With を活用できます。

Sub LoopSheetsWithWith()

Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets

With ws

.Range("A1").Value = "シート名:" & .Name
.Range("A1").Font.Bold = True

End With

Next ws

End Sub

📌 すべてのシートの A1 セルに、シート名を太字で表示!

【VBA】別シートのセルの値を取得:ループ処理

✅シートが存在するか確認して With を使う

存在しないシートを指定するとエラーになるため、事前に確認する コードも紹介します。

【VBA】オブジェクトの存在を確認する方法

Sub SafeWithUsage()

Dim ws As Worksheet
On Error Resume Next
Set ws = Worksheets("集計")
On Error GoTo 0

If ws Is Nothing Then

MsgBox "指定されたシートが見つかりません", vbExclamation
Exit Sub

End If

With ws

.Range("A1").Value = "データ準備済"
.Range("A1").Font.Color = vbGreen

End With

End Sub

📌 Set ws = Worksheets("集計") で取得し、存在チェック後に With を安全に使えます。

まとめ

ポイント内容
With はオブジェクトの繰り返しを省略できるシート指定にも有効で、見やすいコードが書ける
Worksheets("名前") を使うことで明示的にシートを指定可能書式設定やデータ入力の自動化に最適
変数(Set ws = ...)を使うとさらに柔軟にシート名が変わっても1か所の修正で済む
ループ処理とも相性がよく、全シート処理にも使えるFor Each ws In Sheets の中で活用
シート存在チェックでエラーを防ぐことができるws Is Nothing を使って安全に実行可能
💡ワンポイント

書式設定やヘッダーの自動入力など、シート単位での処理に With はとても有効です。
変数と組み合わせることで、さらに保守性・可読性がアップします!

-VBAで自動化, VBAテクニック集, VBA一覧, Withステートメント, 文法・構文