Excel VBA ユーザフォームの検索について
添付の画像のようなユーザフォームを作っています。
TextBox1に検索ワードを入力して、CommandButton1をクリックすると、下のComboBox1に一覧が出るようにしたいと思い、ほかのサイトから下記のコードを見つけて、作ってみました。参照先のsheet2を表示しているときは大丈夫なのですが、別のシートを選んでいるとエラーになります。
sheetは3つあり、それぞれ違うリストが入力されています。今回はsheet2のリストを参照したいのですが、最初はsheet1が表示されている状態で実行したいです。
エラーの内容は
実行時エラー9 インデックスが有効範囲にありません。
コチラがコードです。
Private Sub UserForm_Initialize()
Dim i As Long, imax As Long
Dim tbl() As Variant
imax = ThisWorkbook.Worksheets("sheet2").Cells(Rows.Count, "A").End(xlUp).Row
ReDim tbl(imax)
For i = 1 To imax
tbl(i) = Range("A" & i).Value
Next i
With ComboBox1
.List() = tbl()
End With
End Sub
Private Sub CommandButton1_Click()
Dim i As Long, imax As Long
Dim tbl() As Variant
Dim cnt As Long, j As Long
j = -1
With ThisWorkbook.Worksheets("sheet2")
imax = .Cells(Rows.Count, "A").End(xlUp).Row
cnt = Application.CountIf(Range("A1:A" & imax), "*" & TextBox1.Text & "*")
ReDim tbl(cnt)
For i = 1 To imax
If InStr(.Range("A" & i), TextBox1.Text) > 0 Then
j = j + 1
tbl(j) = Range("A" & i).Value ←この部分がエラーになる
End If
Next i
End With
With ComboBox1
.List() = tbl()
End With
End Sub
どこを直せば良いか、教えてください。
よろしくお願いします。
お礼
ushi2015 様 早速の回答いただきありがとうございます。 すっきりしました。