【ExcelVBA・マクロ】ユーザーフォームのコンボボックスで選択中の値を取得する方法|Value・ListIndexの使い方【コピペOK】

ユーザーフォームのコンボボックスで選択中の値を取得 ExcelVBA

ユーザーフォームのコンボボックスで選択されている値を取得するVBAコードをご紹介します。

  • 選択された値を取得したい
  • 選択内容によって処理を変えたい
  • 入力内容をセルに書き込みたい

このような場合は、コンボボックスの選択値をVBAで取得することで解決できます。
フォーム入力を活用した処理を作るための、非常に重要な基本テクニックです。

この記事では、コンボボックスで現在選択されている値を取得する方法を初心者向けに分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • コンボボックスの選択値を取得できる
  • 選択内容で処理を分岐できる
  • セルへ値を書き込める
  • 実務で使えるコードが分かる

基本:選択されている値を取得する方法

一番基本のコードはこちらです。

Private Sub CommandButton1_Click()

    Dim val As String

    val = Me.ComboBox1.Value

    MsgBox "選択された値:" & val

End Sub

これで、現在選択されている値を取得できます。


Valueプロパティとは?

ComboBox1.Value は、現在選択されている項目の値を取得するプロパティです。

例えば、リストが次のような場合:

  • 未処理
  • 進行中
  • 完了

「進行中」を選んでいれば、「進行中」という文字列が取得されます。


選択された値をセルに書き込む

実務では、選択された値をExcelに反映することが多いです。

Private Sub CommandButton1_Click()

    Worksheets("Sheet1").Range("A1").Value = Me.ComboBox1.Value

End Sub

これで、選択値がA1セルに書き込まれます。


未選択チェックを行う

何も選択されていない場合の対策も重要です。

If Me.ComboBox1.Value = "" Then
    MsgBox "項目を選択してください。", vbExclamation
    Exit Sub
End If

ListIndexを使って取得する方法

選択位置(何番目か)を取得する場合はこちらです。

Dim idx As Long

idx = Me.ComboBox1.ListIndex

MsgBox "選択位置:" & idx

ポイント:

  • 0 → 1番目
  • 1 → 2番目
  • -1 → 未選択

ListIndexを使って値を取得する

ListIndexと組み合わせる方法です。

Dim val As String

If Me.ComboBox1.ListIndex <> -1 Then
    val = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
End If

選択内容で処理を分岐する

選択された値によって処理を変える例です。

Select Case Me.ComboBox1.Value

    Case "未処理"
        MsgBox "未処理を選択しました"

    Case "進行中"
        MsgBox "進行中です"

    Case "完了"
        MsgBox "完了しています"

End Select

このパターンは実務でよく使います。


変更されたタイミングで処理する

選択が変わった瞬間に処理したい場合はこちらです。

Private Sub ComboBox1_Change()

    MsgBox "現在の選択:" & Me.ComboBox1.Value

End Sub

実務での活用例

  • ステータス選択による処理分岐
  • 入力内容のExcel反映
  • 検索条件の指定
  • 入力フォームの制御

コンボボックスの値取得は、フォーム処理の基本です。


よくあるエラーと対処法

① 値が取得できない

コンボボックスに何も選択されていない可能性があります。

② ListIndexが-1になる

未選択状態です。チェックを入れてください。

③ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • 選択値は ComboBox.Value で取得
  • 位置は ListIndex
  • 未選択チェックは必須
  • 分岐処理と組み合わせると実務で活躍

コンボボックスの選択値を取得できるようになると、ユーザーフォームの活用範囲が一気に広がります。
入力内容を元に処理を分けるなど、実務でも非常に重要なスキルなので、ぜひ使いこなしてみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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