2018/09/21(Fri) 09:21:05 編集(投稿者)
何回か書き直しています。m(__)m
こちらでコードを書いて試してみた結果、下のような感じでどうにか行けそうな気がしました。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_listbox.html
の一番下に追記していますので、参照するとわかりやすいと思います。
都道府県名が"Sheet1!O2:O48"に入力されていて、コンボボックスに
初期設定Private Sub UserForm_Initialize() で
With ComboBox1
.RowSource = "Sheet1!O2:O48"
End With
のように書いていあるときの例です。
すると、下のコードのようにして検索が可能と考えました。
なお、このコードは
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_listbox.html
のデータで検索するものです。
Private Sub CommandButton1_Click()
Dim lastRow As Long
Dim myData, myData2(), myno
Dim i As Long, j As Long, cn As Long
Dim key1 As String, key2 As String, key3 As String, key4 As String
If TextBox1.Value = "" Then key1 = "*" Else key1 = "*" & TextBox1.Value & "*"
If TextBox2.Value = "" Then key2 = "*" Else key2 = "*" & TextBox2.Value & "*"
If TextBox3.Value = "" Then key3 = "*" Else key3 = "*" & TextBox3.Value & "*"
Dim ListNo As Long
ListNo = ComboBox1.ListIndex
If ListNo < 0 Then
key4 = "*"
Else
key4 = ComboBox1.List(ListNo)
End If
With Worksheets("Sheet1")
myData = .Range(.Cells(1, 1), .Cells(Rows.Count, 7).End(xlUp)).Value
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
End With
ReDim myData2(1 To lastRow, 1 To 3)
For i = LBound(myData) To UBound(myData)
' If myData(i, 2) Like "*" & TextBox1.Value & "*" And myData(i, 7) Like "*" & TextBox2.Value & "*" Then
If myData(i, 2) Like key1 And myData(i, 7) Like key2 And myData(i, 5) Like key3 And myData(i, 6) Like key4 Then
cn = cn + 1
myData2(cn, 1) = myData(i, 1)
myData2(cn, 2) = myData(i, 2)
myData2(cn, 3) = myData(i, 7)
End If
Next i
With ListBox1
.ColumnCount = 3
.ColumnWidths = "30;70;70"
.List = myData2
End With
End Sub