Excel VBA | 中級・上級 VBA 総合セット(100問)

VBA
スポンサーリンク

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 → フォーム終了
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました