这适用于VBA Access 2003
我有一个文本框我想用作列表框rowsource命令的过滤器。我还有一个复选框,为同一行源命令添加另一个过滤器。我只用C#编程,我试图编写一个Sub,只需设置RowSource,无论我的文本框过滤器是否更改,或者我的复选框过滤器是否更改。但是,我的文本框给了我一些问题。
如果我的复选框过滤器更改并且我运行我的方法,则textbox.Text会抛出一个错误,说明它必须具有焦点 - Text为null。如果我对该属性进行空检查,则会抛出错误,指出控件必须具有焦点。
我已使用.Value属性,但无论出于何种原因,它都不会更新为较新的值。
我目前的尝试:
If Me.txtClientFilter.Text = Null Then ' Error 2185
filter = Me.txtClientFilter.Value
Else
filter = Me.txtClientFilter.Text
End If
我应该
答案 0 :(得分:1)
我用一些代码解决了我的问题,我将在下面展示。我不知道幕后发生了什么,但.Value没有得到.Text值的更新。我决定明确地设置它,然后选择整个文本框值。
我最终得到了以下代码,它显式设置了控件的.Value,并将光标重置为控件中文本的末尾。感谢一些名为Brent Spalding here的人为光标代码。
Private Sub txtClientFilter_Change()
Me.txtClientFilter.Value = Me.txtClientFilter.Text
ProcessFilter
txtClientFilter.SelStart = Len(Me.txtClientFilter.Text)
txtClientFilter.SelLength = 0
End Sub