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/連結列" プロパティ