ここでは 複数シートにまたがって一括で数式を入れる VBAの例を紹介します。ユーザーフォームや通常のマクロからでも応用できますが、まずは基本のコードを見てみましょう。
シナリオ
- 複数のシート(例: “Sheet1”, “Sheet2”, “Sheet3″)に同じ数式を一括で入力したい
- 対象セルは各シートの B2:B6
- 入れる数式は「=SUM(A2:A10)」
基本コード例
Sub 複数シートに一括で数式を入れる()
Dim ws As Worksheet
Dim c As Range
' 対象シートをループ
For Each ws In Worksheets(Array("Sheet1", "Sheet2", "Sheet3"))
' 各シートの対象セル範囲をループ
For Each c In ws.Range("B2:B6")
c.Formula = "=SUM(A2:A10)"
Next c
Next ws
End Sub
VB👉 このコードを実行すると、指定した3つのシートのB2~B6に同じ数式が一括で入ります。
応用例1: ユーザー入力で対象シートを指定
Sub ユーザー指定シートに数式()
Dim sheetNames As Variant
Dim ws As Worksheet
Dim c As Range
' ユーザーにシート名をカンマ区切りで入力させる
sheetNames = Split(InputBox("対象シート名をカンマ区切りで入力してください"), ",")
For Each ws In Worksheets
If UBound(Filter(sheetNames, ws.Name)) >= 0 Then
For Each c In ws.Range("B2:B6")
c.Formula = "=AVERAGE(A2:A10)"
Next c
End If
Next ws
End Sub
VB👉 ユーザーが「Sheet1,Sheet3」と入力すれば、その2つのシートだけに数式が入ります。
応用例2: 全シートに一括で数式を入れる
Sub 全シートに数式()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("B2:B6").Formula = "=MAX(A2:A10)"
Next ws
End Sub
VB👉 すべてのシートに同じ数式を一括で入力できます。
ポイント
- 複数シートを指定する方法
Worksheets(Array("Sheet1","Sheet2"))→ 特定のシートFor Each ws In Worksheets→ 全シート
- セル範囲をループ →
For Each c In ws.Range("B2:B6") - 数式を文字列として組み立てる →
"=SUM(A2:A10)"のように代入
練習課題
- 複数シートに「SUM」「AVERAGE」「MAX」を選択肢で切り替えて一括入力するフォームを作る
- ユーザーに「対象セル範囲」を入力させ、その範囲に数式を入れるコードを書く
- 全シートに「行番号に応じた数式」を自動生成するコードを作ってみる
こうした仕組みを作ると、複数シートにまたがって一括で数式を入れる便利ツールが完成します。


