ここでは ユーザーフォームを使って複数セルに一括で数式を入れる 例を紹介します。GUIから選択や入力を行い、その結果を複数セルにまとめて反映できる仕組みです。
シナリオ
- ユーザーフォームに コンボボックス(計算方法) と テキストボックス(係数) を用意
- 計算方法は「合計」「平均」「最大値」から選択
- 係数を入力すると、その値を使って数式を生成
- 選んだ数式を 複数セル(例: B2:B6) に一括で入力
コード例
1. フォーム初期化
Private Sub UserForm_Initialize()
ComboBox1.AddItem "合計"
ComboBox1.AddItem "平均"
ComboBox1.AddItem "最大値"
End Sub
VB2. ボタンを押したときの処理
Private Sub CommandButton1_Click()
Dim choice As String
Dim factor As Double
Dim c As Range
choice = ComboBox1.Value
factor = Val(TextBox1.Value) ' ユーザー入力の係数
' B2~B6に一括で数式を入れる
For Each c In Range("B2:B6")
Select Case choice
Case "合計"
c.Formula = "=SUM(A2:A10)*" & factor
Case "平均"
c.Formula = "=AVERAGE(A2:A10)*" & factor
Case "最大値"
c.Formula = "=MAX(A2:A10)*" & factor
Case Else
c.Value = "対象外"
End Select
Next c
End Sub
VB👉 例えば「平均」を選んで係数に「1.1」と入力すると、B2~B6に=AVERAGE(A2:A10)*1.1 が一括で入ります。
応用アイデア
- 複数列に一括で数式を入れる(例: B列とC列に同時に反映)
- 対象範囲をユーザー入力で指定(例: 「B2:B20」と入力させる)
- チェックボックスで追加オプション(例: 丸め処理、絶対参照に変換)
ポイント
For Each c In Range("B2:B6")で複数セルをループ処理Select Caseで選択肢ごとに数式を切り替えTextBoxの値を数値化するにはVal()を使う
練習課題
- ユーザーに「対象セル範囲」を入力させ、その範囲に一括で数式を入れるフォームを作る
- 複数の選択肢(計算方法+係数+丸め処理)を組み合わせて複雑な数式を生成する
- 「複数シートにまたがって一括で数式を入れる」フォームを作ってみる
こうした仕組みを作ると、ユーザーがGUIで選んだ条件に応じて 複数セルに一括で数式を自動生成する便利ツール が完成します。


