我需要使用从组合框中输入或选择的字符串来过滤连续形式。下面是我试图用来捕获过滤字符串的代码。当文本被输入到列表中而不是在后面捕获字符串时,会发生错误,而是抛出错误,指示组合框为空。
我在哪里放这个功能?我想只是将代码添加到Combobox_Selected事件,但这不会让用户能够键入任意关键字,以进一步过滤表单的内容。
Private Sub txtUSPSKeySearch_Change()
On Error GoTo Err_txtUSPSKeySearch_Change
Dim searchStr As String
searchStr = txtUSPSKeySearch.Value
If (Not IsNull(searchStr) And Len(searchStr) > 1) Then
Else
' Move the cursor to the end of the combo box.
Me.txtUSPSKeySearch.SetFocus
Me.txtUSPSKeySearch.SelStart = Len(Me.txtUSPSKeySearch.Value)
End If
'Error Handling
Exit_txtUSPSKeySearch_Change:
Exit Sub
Err_txtUSPSKeySearch_Change:
If Err.Number = 5 Then
MsgBox "You must make a selection(s) from the list" _
, , "Selection Required !"
Resume Exit_txtUSPSKeySearch_Change
Else
'Write out the error and exit the sub
MsgBox Err.Description
Resume Exit_txtUSPSKeySearch_Change
End If
End Sub
答案 0 :(得分:0)
“当文本被输入到列表中而不是后面捕获的字符串时,会发生错误,而是抛出错误,指示组合框为空。”
您声明searchStr
必须是字符串数据类型:
Dim searchStr As String
当txtUSPSKeySearch
为空时,此赋值将失败,因为Null不是字符串数据类型。
searchStr = txtUSPSKeySearch.Value
当Nz()
为空时,您可以使用searchStr
函数为txtUSPSKeySearch
提供空字符串:
searchStr = Nz(Me.txtUSPSKeySearch.Value, vbNullString)
然后你可以改变这个If
语句......
If (Not IsNull(searchStr) And Len(searchStr) > 1) Then
到此......
If Len(searchStr) = 0 Then
您正在通过txtUSPSKeySearch
更改事件执行所有操作。考虑使用before update事件来验证值,并使用after update事件来执行您想要对有效值执行的任何其他操作(应用过滤条件?)。