我有一个客户端数据库的动态范围名称,我使用以下代码根据我的文本框过滤它。为什么它总是显示第一个客户端,无论我在文本框中输入什么?
'Dynamic Listing - Client
Private Sub filterClientListing()
Dim rngFilter As range
'Temp String
Dim temp As String
temp = Me.txtClient.Value & "*"
'Variables Definition
Dim wsFData As Worksheet
Set wsFData = Worksheets("FilteredLists")
Dim wsData As Worksheet
Set wsData = Worksheets("Lists")
'Filter Sheet Clear
wsFData.range("A2:C1000").Clear
wsData.AutoFilterMode = False
Set rngFilter = wsData.range("ClientList")
With rngFilter
.AutoFilter Field:=1, Criteria1:=temp
.Copy Destination:=wsFData.range("A1").Offset(1, 0)
.AutoFilter
End With
End Sub
答案 0 :(得分:0)
我的解决方案是使用组合框。现在我唯一需要帮助的是在组合框列表中显示多行。我可以很好地搜索我的范围并在组合上显示结果,但是它可以在一行中显示,我可以按箭头向上或向下。
如何解决此1行显示?
Private Sub cboClient_Change()
Dim v As Variant
Dim i As Long
cboClient.DropDown
With Me.cboClient
If .Value <> "" And .ListIndex = -1 Then
v = Worksheets("Lists").range("ClientList").Value
.Clear
For i = LBound(v, 1) To UBound(v, 1)
If LCase(v(i, 1)) Like LCase(.Value) & "*" Then
.AddItem v(i, 1)
End If
Next i
Else
.List = Worksheets("Lists").range("ClientList").Value
End If
End With
End Sub
以这种方式填充我的组合框:
Private Sub UserForm_Initialize()
With Me.cboClient
.RowSource = ""
.ColumnCount = 1
.AutoWordSelect = False
.MatchEntry = fmMatchEntryNone
.List = Worksheets("Lists").range("ClientList").Value
End With
End Sub