|
こんにちは。かみちゃん です。
> For lngRow = 1 To rng.Rows.Count
> If StrConv(StrConv(rng.Cells(lngRow, 2).Value, vbWide), vbUpperCase) _
> Like "*" & StrConv(StrConv(Me.TextBox1.Value, vbWide), vbUpperCase) & "*" Then
> .AddItem rng.Cells(lngRow, 1).Value
> .List(ComboBox_Row, 1) = rng.Cells(lngRow, 2).Value
> .List(ComboBox_Row, 2) = rng.Cells(lngRow, 3).Value
> .ColumnWidths = "20 pt;20 pt;20 pt"
> .BoundColumn = 1
> ComboBox_Row = ComboBox_Row + 1
> End If
> Next
上記のコードでも動きますが、一部無駄があるので、以下のように修正して
ください。
For lngRow = 1 To rng.Rows.Count
If StrConv(StrConv(rng.Cells(lngRow, 2).Value, vbWide), vbUpperCase) _
Like "*" & StrConv(StrConv(Me.TextBox1.Value, vbWide), vbUpperCase) & "*" Then
.AddItem rng.Cells(lngRow, 1).Value
.List(ComboBox_Row, 1) = rng.Cells(lngRow, 2).Value
.List(ComboBox_Row, 2) = rng.Cells(lngRow, 3).Value
' .ColumnWidths = "20 pt;20 pt;20 pt" '★削除
' .BoundColumn = 1 '★削除
ComboBox_Row = ComboBox_Row + 1
End If
Next
.ColumnWidths = "20 pt;20 pt;20 pt" '★追加
.BoundColumn = 1 '★追加
> 必要でしたら、Findメソッドのヘルプに使用例も載っていますから、まずは
> しっかり読んでみてください。
お詫びの印にFindメソッドを使った例を提示させていただきます。
上記部分を以下に差し替えるような感じにします。
'---検索条件部分一致検索(全角・半角区別なし、大文字・小文字区別なし)
Dim c As Range '★これは、プロシージャの先頭に記述のほうが望ましい
Set c = rng.Columns(2).Find(Me.TextBox1.Value, , xlValues, xlPart, , , False, False)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
.AddItem c.Offset(, -1).Value
.List(ComboBox_Row, 1) = c.Value
.List(ComboBox_Row, 2) = c.Offset(, 1).Value
ComboBox_Row = ComboBox_Row + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
'---検索条件部分一致検索 ここまで
.ColumnWidths = "20 pt;20 pt;20 pt"
.BoundColumn = 1
|
|