找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 745|回复: 8

[VBA函数]:获取用户输入的问题?

[复制链接]
发表于 2005-9-6 23:11:07 | 显示全部楼层 |阅读模式

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

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

×
怎样实现如下功能:
   
    提示用户:“选择对象或[设置(S)]:”后,
    用户在屏幕上选择对象,或者输入“S”进入设置窗口

我使用 GetEntity方法好像实现不了,
       GetEntity方法选择对象时如果输入字符则提示错误并让继续选择!
       而InitializeUserInput方法好像不支持GetEntity
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-6 23:18:32 | 显示全部楼层
好,支持
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-7 17:26:54 | 显示全部楼层
Sub Mccad_InitializeUserInput()
    ' 该示例提示用户选择对象,并通过
    ' InitializeUserInput 方法定义关键字列表,
    ' 用户要以用它来输入关键字。
   
    On Error Resume Next
   
    ' 定义有效的关键字
    Dim keywordList As String
    keywordList = "S E"
   
    ' 调用 InitializeUserInput 初始化关键字
    ThisDrawing.Utility.InitializeUserInput 0, keywordList
   
    ' 获得用户输入
    Dim Pnt As Variant
    Dim ent As AcadEntity
     ThisDrawing.Utility.GetEntity ent, Pnt, "选择对象[设置(S)/删除(E)]: "
    If Err Then
         If StrComp(Err.Number, -2145320928, 1) = 0 Then
         ' 当输入关键字时
             Dim inputString As String
             Err.Clear
             inputString = ThisDrawing.Utility.GetInput
             MsgBox "输入的关键字是: " & inputString
         Else
             MsgBox "选择对象出错: " & Err.Description
             Err.Clear
         End If
    Else
        ' 显示用户选定的对象类型
        MsgBox "你选定的对象类型为: " & ent.ObjectName, , "明经VBA示例:GetEntity及InitializeUserInput方法"
    End If
End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-11 10:14:46 | 显示全部楼层
如果我想单击右键能够退出怎么办????单击右键的错误代码也是-2145320928,,怎么办???急判知道
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-11 10:34:16 | 显示全部楼层
[php]
On Error Resume Next

' 定义有效的关键字
Dim keywordList As String
keywordList = "S E"

' 调用 InitializeUserInput 初始化关键字
ThisDrawing.Utility.InitializeUserInput 0, keywordList

' 获得用户输入
Dim Pnt As Variant
Dim ent As AcadEntity
ThisDrawing.Utility.GetEntity ent, Pnt, "选择对象[设置(S)/删除(E)]: "
If Err Then
    If Err.Number = -2147467259 Then
        ' 当输入关键字时
        Dim inputString As String
        Err.Clear
        inputString = ThisDrawing.Utility.GetInput
        MsgBox "输入的关键字是: " & inputString
    ElseIf Err.Number = -2147352567 Then
        MsgBox "右键"
        Err.Clear
    Else
        MsgBox "选择对象出错: " & Err.Description
        Err.Clear
    End If
Else
    ' 显示用户选定的对象类型
    MsgBox "你选定的对象类型为: " & ent.ObjectName, , "明经VBA示例:GetEntity及InitializeUserInput方法"
End If
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-11 20:50:12 | 显示全部楼层
斑竹的代码好像不是在autocad2004下编的哦!!!我在2004下试不通
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 10:58:39 | 显示全部楼层
你在If Err Then 语句下加一条:
debug.print err.number
在立即窗口看看错误码,相应的改过来就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-12 22:48:13 | 显示全部楼层

  1. Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  2. Const VK_ESCAPE = &H1B
  3. Const VK_LBUTTON = &H1
  4. Const VK_RBUTTON = &H2
  5. Const VK_RETURN = &HD
  6. Const VK_SPACE = &H20

  7. Sub tt()
  8. On Error Resume Next

  9. ' 定义有效的关键字
  10. Dim keywordList As String
  11. keywordList = "S E"

  12. ' 调用 InitializeUserInput 初始化关键字
  13. ThisDrawing.Utility.InitializeUserInput 0, keywordList

  14. ' 获得用户输入
  15. Dim Pnt As Variant
  16. Dim ent As AcadEntity
  17. ThisDrawing.Utility.GetEntity ent, Pnt, "选择对象[设置(S)/删除(E)]: "
  18. If Err Then
  19.     If Err.Number = -2147467259 Then
  20.         ' 当输入关键字时
  21.         Dim inputString As String
  22.         Err.Clear
  23.         inputString = ThisDrawing.Utility.GetInput
  24.         MsgBox "输入的关键字是: " & inputString
  25.     ElseIf Err.Number = -2147352567 Then
  26.         If GetAsyncKeyState(VK_RBUTTON) Then
  27.             MsgBox "右键"
  28.         ElseIf GetAsyncKeyState(VK_LBUTTON) Then
  29.             MsgBox "空选择"
  30.         ElseIf GetAsyncKeyState(VK_RETURN) Then
  31.             MsgBox "回车"
  32.         ElseIf GetAsyncKeyState(VK_SPACE) Then
  33.             MsgBox "空格"
  34.         ElseIf GetAsyncKeyState(VK_ESCAPE) Then
  35.             MsgBox "Esc"
  36.         End If
  37.         Err.Clear
  38.     Else
  39.         MsgBox "选择对象出错: " & Err.Description
  40.         Err.Clear
  41.     End If
  42. Else
  43.     ' 显示用户选定的对象类型
  44.     MsgBox "你选定的对象类型为: " & ent.ObjectName, , "明经VBA示例:GetEntity及InitializeUserInput方法"
  45. End If

  46. End Sub

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

使用道具 举报

 楼主| 发表于 2005-9-13 15:37:33 | 显示全部楼层
谢谢斑竹,这个对我很有用!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 07:38 , Processed in 0.403993 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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