- VBA ユーザーフォーム・UI 練習問題(10問)+ 解答解説
- Q1. ユーザーフォームにリストボックスを配置し、シートの顧客名を一覧表示せよ
- Q2. テキストボックスに入力した商品コードから商品名を検索して表示せよ
- Q3. コマンドボタンを押すと選択セルの値を MsgBox に表示せよ
- Q4. ユーザーフォームにチェックボックスを配置し、選択状態を判定せよ
- Q5. コンボボックスにシート名一覧を表示し、選択したシートをアクティブにせよ
- Q6. ユーザーフォームにオプションボタンを配置し、選択結果を表示せよ
- Q7. ユーザーフォームにスクロールバーを配置し、値をラベルに反映せよ
- Q8. ユーザーフォームにスピンボタンを配置し、セルの値を増減させよ
- Q9. ユーザーフォームに複数のテキストボックスを配置し、入力内容をシートに書き込め
- Q10. ユーザーフォームを閉じるコードを書け
- ✅ 総まとめ
VBA ユーザーフォーム・UI 練習問題(10問)+ 解答解説
Excel VBA の ユーザーフォーム(UserForm)と UI 操作は、ユーザーに入力や選択をしてもらうための仕組みです。
ここでは代表的な 10問 を用意し、模範コードと解説を添えています。
Q1. ユーザーフォームにリストボックスを配置し、シートの顧客名を一覧表示せよ
解答例
Private Sub UserForm_Initialize()
Dim r As Range
For Each r In Sheets("顧客リスト").Range("A2:A20")
If r.Value <> "" Then Me.ListBox1.AddItem r.Value
Next r
End Sub
VB解説:
フォーム起動時に UserForm_Initialize が呼ばれる。ListBox.AddItem で顧客名を追加。
Q2. テキストボックスに入力した商品コードから商品名を検索して表示せよ
解答例
Private Sub CommandButton1_Click()
Dim code As String, r As Range
code = Me.TextBox1.Value
Set r = Sheets("商品マスタ").Range("A:A").Find(code, LookAt:=xlWhole)
If Not r Is Nothing Then
Me.Label1.Caption = r.Offset(0, 1).Value
Else
Me.Label1.Caption = "該当なし"
End If
End Sub
VB解説:Find メソッドで検索。結果をラベルに表示。
Q3. コマンドボタンを押すと選択セルの値を MsgBox に表示せよ
解答例
Private Sub CommandButton1_Click()
MsgBox "選択セルの値は: " & ActiveCell.Value
End Sub
VB解説:
シンプルな UI 操作。選択セルの値を確認する用途。
Q4. ユーザーフォームにチェックボックスを配置し、選択状態を判定せよ
解答例
Private Sub CommandButton1_Click()
If Me.CheckBox1.Value = True Then
MsgBox "チェックされています"
Else
MsgBox "チェックされていません"
End If
End Sub
VB解説:
チェックボックスは Value が True/False で判定できる。
Q5. コンボボックスにシート名一覧を表示し、選択したシートをアクティブにせよ
解答例
Private Sub UserForm_Initialize()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
Me.ComboBox1.AddItem ws.Name
Next ws
End Sub
Private Sub CommandButton1_Click()
Sheets(Me.ComboBox1.Value).Activate
End Sub
VB解説:
コンボボックスにシート名を追加 → 選択したシートを表示。
Q6. ユーザーフォームにオプションボタンを配置し、選択結果を表示せよ
解答例
Private Sub CommandButton1_Click()
If Me.OptionButton1.Value Then
MsgBox "選択: 男性"
ElseIf Me.OptionButton2.Value Then
MsgBox "選択: 女性"
End If
End Sub
VB解説:
オプションボタンはグループ内で一つだけ選択される。
Q7. ユーザーフォームにスクロールバーを配置し、値をラベルに反映せよ
解答例
Private Sub ScrollBar1_Change()
Me.Label1.Caption = "値: " & Me.ScrollBar1.Value
End Sub
VB解説:
スクロールバーの値をリアルタイムにラベルへ表示。
Q8. ユーザーフォームにスピンボタンを配置し、セルの値を増減させよ
解答例
Private Sub SpinButton1_Change()
Range("B2").Value = Me.SpinButton1.Value
End Sub
VB解説:
スピンボタンは数値を上下させる UI。セルに反映可能。
Q9. ユーザーフォームに複数のテキストボックスを配置し、入力内容をシートに書き込め
解答例
Private Sub CommandButton1_Click()
Dim lastRow As Long
lastRow = Sheets("顧客リスト").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("顧客リスト")
.Cells(lastRow, 1).Value = Me.TextBox1.Value
.Cells(lastRow, 2).Value = Me.TextBox2.Value
.Cells(lastRow, 3).Value = Me.TextBox3.Value
End With
End Sub
VB解説:
フォーム入力をシートに書き込む典型的な「データ入力フォーム」。
Q10. ユーザーフォームを閉じるコードを書け
解答例
Private Sub CommandButton2_Click()
Unload Me
End Sub
VB解説:Unload Me でフォームを閉じる。Me.Hide なら非表示にできる。
✅ 総まとめ
- ListBox / ComboBox → データ一覧や選択肢を表示
- TextBox / Label → 入力と表示
- CheckBox / OptionButton → 条件選択
- ScrollBar / SpinButton → 数値操作
- CommandButton → 実行処理
- Unload Me → フォーム終了


