サンプル ダウンロード
[リストボックスの値をテキストボックスへ]
*複数列に表示されているリストボックスの値をテキストボックスへ転記します。 ここで紹介する方法は2つ。 一つはVLookupを使う もう一つはリストボックスのリストインデックスを使う方法です。 結果は同じですが、アプローチが違います。 どちらを使うかは好みかと。
Private Sub ComboBox1_Change()
'==========================
' 「VLookup」でデータ取得
'==========================
If IsError(Application.VLookup(ComboBox1.Text, Range("A2:B65536"), 2, False)) Then
TextBox1.Text = ""
Else
TextBox1.Text = Application.VLookup(ComboBox1.Text, Range("A2:B65536"), 2, False)
End If
'==========================
' 「ListIndex」で取得
'==========================
Dim myIndex
myIndex = ComboBox1.ListIndex
If myIndex >= 0 Then
TextBox2.Text = ComboBox1.List(myIndex, 1)
Else
TextBox2.Text = ""
End If
End Sub
Private Sub UserForm_Initialize()
'ループ処理でリストボックスに追加
Dim lstRow2 As Long
Dim i As Long '行番号
Dim q As Long 'リストボックスの行番号
ComboBox1.Clear 'リストボックスの値を削除しておく。
ComboBox1.ColumnCount = 2 '2列表示
ComboBox1.ColumnWidths = "25 pt;40 pt" '表示する列の幅
'================================================================
lstRow2 = Cells(65536, "A").End(xlUp).Row '最終行の取得
q = 0 'リストボックスの行番号
For i = 2 To lstRow2 '2行目から最終行までリストに追加する
With ComboBox1
.AddItem
.List(q, 0) = Cells(i, "A").Value '1列目
.List(q, 1) = Cells(i, "B").Value '2列目
'.List(q, 2) = Cells(i, "D").Value '3列目
End With
q = q + 1 'リストボックスの行番号
Next
'================================================================
End Sub
|