Windows 10 Pro_x64 + Excel2013_x86 VBA の ComboBox で複数の列を表示する

Windows 10 Pro_x64 + Excel2013_x86 VBA の ComboBox で複数の列を表示する

 

Excel VBA のUserForm上のComboBoxに複数列を表示したい時のメモ

普段はデータベースからひらってきたデータを表示することが多いんだけど

最小限必要なコードを張りつけてみる

 

・UserFormを1個追加する

・UserFormの上にComboBoxを1個追加する

・UserFormの上にCommandButtonを2個追加する

・CommandButton1をクリックしたときにComboBox1にデータを追加する

・CommandButton2をクリックしたときにComboBox1で選択されている

 データを表示する

サンプルコード

Option Explicit

Private Sub CommandButton1_Click()

    Dim varArry()   As Variant
    
    ReDim varArry(3, 2)

    varArry(0, 0) = "01"
    varArry(0, 1) = "北海道"
    varArry(1, 0) = "02"
    varArry(1, 1) = "青森県"
    varArry(2, 0) = "03"
    varArry(2, 1) = "岩手県"
'
    ComboBox1.Clear
'
    With ComboBox1
        .ColumnCount = 2            '1行に2個表示
        .TextColumn = 2             '2個目のデータを表示
        .BoundColumn = 1            '※1参照
        .ColumnWidths = "30, 50"    'カラムの幅
        .List() = varArry()         'リスト項目の設定
    End With

End Sub

Private Sub CommandButton2_Click()
'
    Dim strCode     As String
    Dim strName     As String
'
    If ComboBox1.ListIndex >= 0 Then
        strCode = Trim(ComboBox1.Column(0, Me.ComboBox1.ListIndex))
        strName = Trim(ComboBox1.Column(1, Me.ComboBox1.ListIndex))
    End If
'
Debug.Print strCode, strName
'
End Sub

※1

0 コントロールに ListIndex プロパティの値を割り当てます。

1 以上指定した列からコントロールに値を割り当てます。このプロパティを

 使用するとき、列には、1 から番号が付けられます (既定)。

"BoundColumn/連結列" プロパティ