找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 865|回复: 3

[分享]:VBA get族交互选择技巧!

[复制链接]
发表于 2002-12-10 08:41:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Sub Example_GetPoint()
    ' This example returns a point entered by the user.
   
    Dim returnPnt As Variant
123:  On Error Resume Next

  
    returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
    If Err Then GoTo 123:
  
    MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2) & vbCrLf

   
End Sub


'Utility的GET族函数在与屏幕交互输入时
'无法操作别的任何命令,实际上在运用中
'经常要移动屏幕,上面这个例子就是一个简单运用
'注意 123:的位置!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-12-10 10:11:48 | 显示全部楼层
好,我又学到了一招。谢谢
还有什么高招请继续

还有个问题,请问哪有acad2002的VBA开发指南之类的电子书下载?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-12-10 14:55:13 | 显示全部楼层
可以根据返回的错误号来判断,并进行相应的处理,如下:

  1.   [FONT=courier new]
  2. Sub Example_GetPoint()
  3. ' This example returns a point entered by the user.

  4.     Dim returnPnt As Variant
  5.     On Error GoTo ErrTrap
  6.     returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
  7.     MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2) & vbCrLf
  8.     Exit Sub

  9. ErrTrap:
  10.     If Err.Number = -2147352567 Then '运行其它的命令,如透明命令等
  11.         Err.Clear
  12.         Resume
  13.     ElseIf Err.Number = -2147467259 Then '右键单击,这时ESC键无效,只能按右键退出,
  14.     End If
  15. On Error GoTo 0
  16. End Sub

  17.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2002-12-14 12:01:54 | 显示全部楼层
上述方法,当发生错误而中断时,采用的是屏蔽错误的做法,那么如果这时用户想按ESC键来退出怎么办?ESC键在CAD中普遍用来中断命令,如何才能实现这种功能呢?这时可借助于API函数。
GetAsyncKeyState函数用来检测某一个键值的变更状态,如在键盘上按了某一个键。
下面的例子是用来在获取点时,检测是否按了ESC键。


  1.   [FONT=courier new]
  2. Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

  3. Sub Example_GetPoint()
  4.     Dim returnPnt As Variant

  5.     On Error GoTo ErrTrap
  6.     returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
  7.     Exit Sub

  8. ErrTrap:
  9.     If GetAsyncKeyState(&H1B) Then Exit Sub 'ESC键值为27,换算成十六进制为1B。
  10.     If Err.Number = -2147352567 Then '运行其它的命令,如透明命令等
  11.         Err.Clear
  12.         Resume
  13.     ElseIf Err.Number = -2147467259 Then '右键单击,这时ESC键无效,只能按右键退出,
  14.     End If
  15. On Error GoTo 0
  16. End Sub

  17.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 10:45 , Processed in 0.397003 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表