ここでは ユーザーフォームで複数の選択肢を組み合わせて、さらに複雑な数式を生成する 例を紹介します。GUIを使うと「ユーザーが選んだ条件に応じて数式を自動生成」できるので、柔軟な仕組みが作れます。
シナリオ
- ユーザーフォームに コンボボックス(計算方法) と テキストボックス(係数) を用意
- 計算方法は「合計」「平均」「最大値」から選択
- 係数を入力すると、その値を使って数式を生成
- 結果をシートのセルに自動入力
コード例
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
choice = ComboBox1.Value
factor = Val(TextBox1.Value) ' ユーザー入力の係数
Select Case choice
Case "合計"
Range("B2").Formula = "=SUM(A2:A10)*" & factor
Case "平均"
Range("B2").Formula = "=AVERAGE(A2:A10)*" & factor
Case "最大値"
Range("B2").Formula = "=MAX(A2:A10)*" & factor
Case Else
MsgBox "選択肢を選んでください"
End Select
End Sub
VB👉 例えば「平均」を選んで係数に「1.1」と入力すると、B2セルに=AVERAGE(A2:A10)*1.1 が自動で入ります。
応用アイデア
- 複数コンボボックスを組み合わせて「計算方法 × 対象範囲」を選べるようにする
- チェックボックスで「小数点切り捨て」「切り上げ」などのオプションを追加
- ラジオボタンで「掛け算」「割り算」を選べるようにする
ポイント
- 複数の入力部品を組み合わせることで、ユーザーが柔軟に条件を指定できる
- Select Case を使うと分岐がわかりやすい
- TextBoxの値を数値化するには
Val()を使う
練習課題
- コンボボックスで「計算方法」、テキストボックスで「対象列番号」を入力させ、その列を参照する数式を生成する
- チェックボックスで「結果を四捨五入するかどうか」を選べるようにする
- 複数の選択肢を組み合わせて「SUM」「AVERAGE」「MAX」+「係数」+「丸め処理」を同時に反映するフォームを作る
こうした仕組みを作ると、ユーザーがGUIで選んだ条件に応じて 複雑な数式を自動生成する「柔軟なツール」 が完成します。


