为什么?
我对MyControl的关注如下:
If IsNull(Me.MyControl.Value) Then
Me.MyControl.Value = "FREDDY"
SendKeys "{F2}"
End If
这很好用并将光标放在文本FREDDY的末尾,以便用户轻松添加到文本中。
但是,如果我在sendkeys行上设置了一个断点,并且“跳过”,则在设计环境中打开Object explorer。 (即F2发布到设计环境!)
我在其他地方遇到过这个问题。
如果处于调试模式,如何停止执行sendkeys行?
请注意
screen.ActiveForm.Name
总是返回活动表单的名称,即使代码窗口“具有焦点”。
非常感谢帮助。
答案 0 :(得分:3)
在其中一个模块代码表的顶部声明一个公共布尔值。
Public GLOBAL_RUNTIME_MODE as Boolean 'initialized as False
'optionally set it right here when you've stopped debugging.
'GLOBAL_RUNTIME_MODE = True
您希望避免在调试会话期间运行代码的任何地方,将全局布尔值包装到代码行周围的条件语句中。
Me.MyControl.Value = "FREDDY"
If GLOBAL_RUNTIME_MODE Then
SendKeys "{F2}"
End If
在完成调试后,在单个位置更改公共变量以影响所有条件。
GLOBAL_RUNTIME_MODE = True
答案 1 :(得分:2)
SendKeys
应该是最后的手段。因为你正在经历的副作用。
更好的方法是更改.SelStart
属性:
With Me.MyControl
.Value = "FREDDY"
.SelStart = .SelLength
End With
取消选择文本并将光标放在最后。
答案 2 :(得分:1)
我认为VBA无法发现这一点。
一般建议(按此顺序):
Stop
命令) - 在有问题的行之后,或之前和之后,以及"运行" (F5)而不是单步执行。Set Next Statement
跳过该行。