ここから本文です

vba リストボックスの行数について教えてください。 ネットを参考に、テキスト...

omo********さん

2018/12/1215:51:58

vba リストボックスの行数について教えてください。

ネットを参考に、テキストボックスに入力した値をデータから検索し、
リストボックスに表示するコードを作りました。

このコードですと、検索結果が数件でも、リストボックスが空欄の状態で下まで続いてしまいます。
恐らくデータベースの行数分。
これを検索結果の件数分の行数のみにする方法はありますでしょうか?


Private Sub cmdSearch_Click()

Set sh_database = ThisWorkbook.Sheets("データベース")

Dim lRow As Long 'データベースの最終行
Dim myData, myData2()
Dim i As Long, cn As Long

'データベースを配列「myData」に格納
With sh_database
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(1, 1), .Cells(lRow, 7)).Value
End With

'テキストボックスの入力値を大文字に変換
Dim kataban As String
kataban = UCase(txtKataban.Value)

'配列「myData」の中で、検索で一致したデータを配列「myData2」に格納
ReDim myData2(1 To lRow, 1 To 2)
For i = LBound(myData) To UBound(myData)
If myData(i, 1) Like "*" & kataban & "*" Then
cn = cn + 1
myData2(cn, 1) = myData(i, 1)
myData2(cn, 2) = myData(i, 2)
End If
Next i

'検索で一致したデータをリストボックスに表示
If cn = 0 Then '該当データが0件の時
MsgBox "検索条件に一致するデータが見つかりません", vbInformation
txtKataban.SetFocus
Else
With frmSearch.lstKataban
.ColumnCount = 2
.ColumnWidths = "110;110"
.List = myData2
End With
End If

End Sub

閲覧数:
65
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2018/12/1216:48:19

以下の2カ所の変更を試してください。

1)
ReDim myData2(1 To lRow, 1 To 2)
For i = LBound(myData) To UBound(myData)
If myData(i, 1) Like "*" & kataban & "*" Then
cn = cn + 1
myData2(cn, 1) = myData(i, 1)
myData2(cn, 2) = myData(i, 2)
End If
Next i



For i = LBound(myData) To UBound(myData)
If myData(i, 1) Like "*" & kataban & "*" Then
ReDim Preserve myData2(1 To 2, cn)
myData2(1, cn) = myData(i, 1)
myData2(2, cn) = myData(i, 2)
cn = cn + 1
End If
Next i

2)
With frmSearch.lstKataban
.ColumnCount = 2
.ColumnWidths = "110;110"
.List = myData2
End With



With frmSearch.lstKataban
.ColumnCount = 2
.ColumnWidths = "110;110"
.List = Application.Transpose(myData2)
End With

質問した人からのコメント

2018/12/12 17:28:40

できました!!!
ご丁寧にありがとうございました(>_<)

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる