Excel VBA | ユーザーフォームを使って複数セルに一括で数式を入れる

VBA
スポンサーリンク

ここでは ユーザーフォームを使って複数セルに一括で数式を入れる 例を紹介します。GUIから選択や入力を行い、その結果を複数セルにまとめて反映できる仕組みです。


シナリオ

  • ユーザーフォームに コンボボックス(計算方法)テキストボックス(係数) を用意
  • 計算方法は「合計」「平均」「最大値」から選択
  • 係数を入力すると、その値を使って数式を生成
  • 選んだ数式を 複数セル(例: B2:B6) に一括で入力

コード例

1. フォーム初期化

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "合計"
    ComboBox1.AddItem "平均"
    ComboBox1.AddItem "最大値"
End Sub
VB

2. ボタンを押したときの処理

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() を使う

練習課題

  1. ユーザーに「対象セル範囲」を入力させ、その範囲に一括で数式を入れるフォームを作る
  2. 複数の選択肢(計算方法+係数+丸め処理)を組み合わせて複雑な数式を生成する
  3. 「複数シートにまたがって一括で数式を入れる」フォームを作ってみる

こうした仕組みを作ると、ユーザーがGUIで選んだ条件に応じて 複数セルに一括で数式を自動生成する便利ツール が完成します。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました