一个简单问题,VBA如何实现按ESC键退出循环?
<p>设计了一个简单的VBA程序,用Do Loop循环从CAD上截取数据输出到EXCEL表格。现在程序已经能用了,就是不知道怎么样用ESC键终止,结果每次都弄成了无限次数的循环。请问应该怎么样实现这个简单的功能呢?</p><p>最好设计为“按回车键继续录入,按ESC键终止”</p><p>CAD编程的资料不好找,不像EXCEL程序网上到处都是。烦请各位高手了!非常感谢</p> 天之雨露 发表于 2009-6-23 05:28DoEvents能实现你要的功能,具体参见以下网址,灵活运用http://www.cnblogs.com/todd/archive/2006/05/10/3 ...
处理按下Esc键
If objSelect Is Nothing Then
If CheckKey(&H1B) = True Then
Exit Sub
Else
do something
End If
End If 加个 if,判断一下esc就可以了。 <p>DoEvents能实现你要的功能,具体参见以下网址,灵活运用</p><p><a href="http://www.cnblogs.com/todd/archive/2006/05/10/396095.html">http://www.cnblogs.com/todd/archive/2006/05/10/396095.html</a></p> <p>在end sub 上面一行输入扑捉错误的行标志,如 </p><p>sub XX()</p><p></p><p>on error goto flag:</p><p>这里是你的源代码。</p><p></p><p>flag:</p><p>msgbox "你按了ESC键。"</p><p>end sub</p> <p>谢谢楼上的兄弟,不过我的代码里面已经用过了on error resume next语句</p><p>有没有捕捉键盘输入的语句呢?</p> <a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=70901">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=70901</a> mycad发表于2009-6-23 9:19:00static/image/common/back.gif在end sub 上面一行输入扑捉错误的行标志,如 sub XX()on error goto flag:这里是你的源代码。flag:msgbox \"你按了ESC键。\"end sub
<p></p><p>这个办法我试过了可以用!谢谢</p><p>但我觉得这个方法不够完美,不止是按下ESC键会使程序退出,就是按下回车键、空格键也会退出。</p><p>更麻烦的是,我的Do Loop 循环里面有从CAD屏幕选择对象的语句,如果不小心点到了屏幕上空白处,也会导致程序退出。有没有更好的方法呢?</p><p>或者说,在屏幕选择的语句里,设置成为“如果不小心点到了屏幕的空白处,则提示用户重新选择一次,而不是直接转到 on error goto flag ”</p><p></p> <p>Option Explicit<br/>'取得键盘上每个虚拟键当前的状态<br/>Private Declare Function GetKeyboardState Lib "user32" _<br/> (pbKeyState As Byte) As Long<br/>'根据指定的映射类型,执行不同的扫描码和字符转换<br/>Private Declare Function MapVirtualKey Lib "user32" _<br/> Alias "MapVirtualKeyA" (ByVal wCode As Long, _<br/> ByVal wMapType As Long) As Long<br/>Private Sub Command1_Click()<br/> Dim i As Integer<br/> Dim Key(0 To 255) As Byte<br/> Dim KeyCode As Long<br/> Do<br/> DoEvents<br/> dl& = GetKeyboardState(Key(0)) '获取当前按键状态<br/> For i = 0 To 254<br/> If Key(i) And &H80 Then '如某个键当时按下,则位7为1<br/> KeyCode& = MapVirtualKey(i, 0)<br/> If KeyCode = 1 Then Exit Do<br/> End If<br/> Next<br/> Loop<br/> MsgBox 1<br/>End Sub</p> if err.number=-2147352567 then exit do 可以判断虚拟键盘状态 还有别的好办法吗
页:
[1]
2