Excel VBA | ユーザーフォームで複数の選択肢を組み合わせて、さらに複雑な数式を生成する

VBA
スポンサーリンク

ここでは ユーザーフォームで複数の選択肢を組み合わせて、さらに複雑な数式を生成する 例を紹介します。GUIを使うと「ユーザーが選んだ条件に応じて数式を自動生成」できるので、柔軟な仕組みが作れます。


シナリオ

  • ユーザーフォームに コンボボックス(計算方法)テキストボックス(係数) を用意
  • 計算方法は「合計」「平均」「最大値」から選択
  • 係数を入力すると、その値を使って数式を生成
  • 結果をシートのセルに自動入力

コード例

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

練習課題

  1. コンボボックスで「計算方法」、テキストボックスで「対象列番号」を入力させ、その列を参照する数式を生成する
  2. チェックボックスで「結果を四捨五入するかどうか」を選べるようにする
  3. 複数の選択肢を組み合わせて「SUM」「AVERAGE」「MAX」+「係数」+「丸め処理」を同時に反映するフォームを作る

こうした仕組みを作ると、ユーザーがGUIで選んだ条件に応じて 複雑な数式を自動生成する「柔軟なツール」 が完成します。

タイトルとURLをコピーしました