找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 924|回复: 5

[求助]:VBA中有关输入的问题

[复制链接]
发表于 2003-6-16 18:46:57 | 显示全部楼层 |阅读模式

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

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

×
有两个问题要向您指教!
1)程序运行时,当提示输入数字时,回车可输入默认数字。
2)程序运行时,通过命令行提示,在命令行输入不同的字母,得到不同的运行结果。(这两条都和CAD一样)
请给出示范代码,谢谢!

又一问题,请看一段代码:

  1. For si = 1 To 3
  2.     interpt = hline1.IntersectWith(sset.Item(si), acExtendNone)
  3.     If [color=red]UBound[/color](interpt) = -1 Then
  4.       Set hline2 = sset.Item(si)
  5.     End If
  6.   Next
  7.   
复制代码

请您讲解一下UBound,好吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-16 19:08:44 | 显示全部楼层
UBound 函数
返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
语法
UBound(arrayname[, dimension])
UBound 函数的语法包含下面部分:
部分 描述
arrayname 必需的。数组变量的名称,遵循标准变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。
说明
UBound 函数与 LBound 函数一起使用,用来确定一个数组的大小。LBound 用来确定数组某一维的上界。
对具有下述维数的数组而言,UBound 的返回值见下表:
Dim A(1 To 100, 0 To 3, -3 To 4)
语句 返回值
UBound(A, 1) 100
UBound(A, 2) 3

UBound 函数示例
该示例使用 UBound 函数,确定数组的指定维的最大可用下标。

Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20)    '声明数组变量。
Dim AnyArray(10)
Upper = UBound(MyArray, 1)    '返回 10。
Upper = UBound(MyArray, 3)    '返回 20。
Upper = UBound(AnyArray)    '返回 10。

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

使用道具 举报

发表于 2003-6-16 20:11:36 | 显示全部楼层
输入默认数字


  1.   [FONT=courier new]
  2. Sub test_Number()
  3.     On Error Resume Next
  4.     Dim a As Variant
  5.     Dim DN As Integer
  6.     DN = 12
  7.     a = AcadApplication.ActiveDocument.Utility.GetInteger("input integer<" + Str(DN) + ">: ")
  8.     If IsEmpty(a) Then
  9.         a = DN
  10.     End If
  11.     MsgBox "you input is: " + Str(a)
  12.    
  13.    

  14. End Sub

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

使用道具 举报

已领礼包: 181个

财富等级: 日进斗金

发表于 2003-6-16 20:49:38 | 显示全部楼层

Re: [求助]:VBA中有关输入的问题

最初由 ahlzl 发布
[B]有两个问题要向您指教!
1)程序运行时,当提示输入数字时,回车可输入默认数字。
2)程序运行时,通过命令行提示,在命令行输入不同的字母,得到不同的运行结果。(这两条都和CAD一样)
请给出示范代码,谢谢!
... [/B]


默认数字就是在运行GetInteger或者GetDistance等等时,如果返回值为0,那么就将它设置为默认值,而得到多个不同的字母,其实就是在命令行上实现选择项功能,那么可以先用Utility对象的初始化关键字列表InitializeKeywordList来定义一些关键字以后就只能输入这些字母,其它没有定义的就无效.以后根据返回值来运行不同的代码.
UBound和LBound是判断一个数组的上限或者下限,等于-1说明这个数组没有值即为空.判断一个数组是否为空,也可以使用IsEmpty.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-16 22:22:13 | 显示全部楼层

  1.   [FONT=courier new]
  2.     On Error Resume Next
  3.     Dim center As Variant
  4.     Dim D As Variant
  5.     Dim R As Variant
  6.     Dim DEF As Double
  7.     Dim Station As Boolean
  8.     DEF = 20
  9.     Station = True
  10.     ' Define the valid keywords
  11.     Dim keywordList As String
  12.     center = ThisDrawing.Utility.GetPoint(, "Specify center point for circle: ")
  13.     keywordList = "Diameter"
  14.     While Station
  15.         
  16.         ThisDrawing.Utility.InitializeUserInput 128, keywordList
  17.         Err.Clear
  18.         R = ThisDrawing.Utility.GetDistance(center, "Specify radius of circle or [Diameter] <" + Str(DEF) + ">: ")
  19.         ' when wrong
  20.         If Err Then
  21.             If StrComp(Err.Description, "User input is a keyword", 1) = 0 Then
  22.                 inputstr = UCase(ThisDrawing.Utility.GetInput)
  23.                 Select Case inputstr
  24.                 Case Empty
  25.                     ThisDrawing.ModelSpace.AddCircle center, DEF
  26.                     Station = False
  27.                 Case "DIAMETER"
  28.                     ' One of the keywords was entered
  29.                     D = ThisDrawing.Utility.GetDistance(center, "Specify diameter of circle: ")
  30.                     ThisDrawing.ModelSpace.AddCircle center, D / 2
  31.                     Station = False
  32.                 End Select
  33.             
  34.             
  35.          
  36.             End If
  37.         
  38.         'when input is right
  39.         Else
  40.             ThisDrawing.ModelSpace.AddCircle center, R
  41.             Station = False
  42.         End If
  43.     Wend
  44.                
  45. End Sub

  46.   [/FONT]


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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 13:05 , Processed in 0.479949 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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