【发布时间】:2015-04-29 12:29:33
【问题描述】:
我在连续表单的标题中有一个文本框控件。输入的字符用于构建和应用过滤字符串。应用过滤器后,使用 set focus 和 selstart 将焦点设置回文本框,以便用户能够添加更多字符。结果是在输入每个字符时过滤记录列表。
设置过滤器代码由文本框 on change 事件触发。代码将焦点移到另一个控件,然后返回,以便更新 textbox.value 属性(我尝试使用 .text 但一直遇到其他焦点问题)。
记录过滤一直有效,直到输入导致显示零记录的字符串。
此时设置 Selstart 属性的 VBA 行抛出
"除非控件具有焦点,否则不能设置控件的属性"
代码行如下,TxtFilterString 是文本框的名称,LengthOfText 是整数,SetFormFilter 是构建过滤器并应用它的子:
LengthOfText = Len(Me.TxtFilterString.Value)
SetFormFilter
Me.TxtFilterString.SetFocus
Me.TxtFilterString.SelStart = LengthOfText
当没有要显示的记录时,Me.TxtFilterString.SetFocus 行似乎失败,这会导致以下行引发错误,尽管该控件在标题部分可见。
【问题讨论】:
标签: vba ms-access ms-access-2007 setfocus