dis allow null或esc或enterkey的最佳方法
这个看似简单的问题引发了一些有趣的错误陷阱 ;如果在没有有效条目的情况下按enter键,我会发现类型与以下内容不匹配[代码我当时想的是尝试使用InitializeUserInput之类的东西来阻止esc或空白的enter键我不知道';没有任何输入;但我想知道这个小功能是什么#039;作用 从帮助文件
马特,谢谢,但不是;这些位是初始化输入的吗 ;我试图使用InputBox,但找不到任何关于设置其使用位的文档
MJF该框的功能是放置在具有高程的块中的更大功能的一部分 ;我写了一个程序来绘制一个三维的电力变电站
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Sub AddPT()
Const VK_ESCAPE = &H1B
Const VK_LBUTTON = &H1
Const VK_SPACE = &H20
Const VK_RETURN = &HD
Const VK_LEFT = &H25
Dim inspt As Variant
Dim intOSMode As Integer
Dim dblRotation As Double
Dim objBlockRef As AcadBlockReference, dblTOC As Double
Dim varCancel As Variant, oCurrLayeR As AcadLayer
On Error GoTo Err_Control
Set oCurrLayeR = ThisDrawing.ActiveLayer
IsSetup
Start:
dblTOC = CDbl(InputBox("What is T.O.C. elevation? ie 12 or 0 or -12"))
ThisDrawing.SetVariable "ORTHOMODE", 1
intOSMode = ThisDrawing.GetVariable("OSMODE")
ThisDrawing.SetVariable "OSMODE", 32
inspt = ThisDrawing.Utility.GetPoint(, "Pick Insertion Point: ")
inspt(2) = inspt(2) + dblTOC
ThisDrawing.SetVariable "OSMODE", intOSMode
dblRotation = ThisDrawing.Utility.GetAngle(inspt, "Pick Front Side of PT: ")
Set objBlockRef = ThisDrawing.ModelSpace.InsertBlock(inspt, Path & "138kv-PT-ASSEMBLY.dwg", 1, 1, 1, dblRotation)
ThisDrawing.Regen acActiveViewport
Exit_Here:
ThisDrawing.ActiveLayer = oCurrLayeR
ThisDrawing.SetVariable "OSMODE", intOSMode
ThisDrawing.SetVariable "INSUNITS", 1
Exit Sub
Err_Control:
Select Case Err.Number
Case -2147352567
'Debug.Print Err.Number, Err.Description
varCancel = ThisDrawing.GetVariable("LASTPROMPT")
If InStr(1, varCancel, "*Cancel*")0 Then
If GetAsyncKeyState(VK_ESCAPE) And 8000 > 0 Then
Err.Clear
Resume Exit_Here
ElseIf GetAsyncKeyState(VK_LBUTTON) > 0 Then
Err.Clear
Resume
End If
Else
If GetAsyncKeyState(VK_SPACE) Then
Resume Exit_Here
End If
'Missed the pick, send them back!
Err.Clear
Resume
End If
Case 13
GoTo Start
Case Else
MsgBox Err.Description
Resume Exit_Here
End Select
End Sub 正如你所见,这是一个基本的功能,但我从来没有想过我的用户不输入值。 在快速搜索时,我发现了这些……也许其中一个会有所帮助
http://www.dailydoseofexcel.com/archives/2005/05/04/1118/http://www.dicks-blog.com/archives/2004/05/26/validating-an-inputbox/http://www.vba-programmer.com/Snippets/Code_VB/InputBox_Cancel_vs_No_Input.html 最后一个看起来很好,但我有一个问题,我必须摆脱我的错误声明,使其工作吗? 我可以';我想不出你需要保留它的任何理由 ;如果按下取消按钮或esc,您会收到一条消息 ;如果输入框为空,则会收到一条消息 ;看起来所有的基地都被覆盖了 ;除非我';我错过了什么??!? 好吧,(我不想成为PITA),但如果我去掉err控件,如果用户在选择插入pt时按ESC会发生什么? 不管怎样,我可以使用InitializeUserInput让他们选择一个点 是的……你';对于点拾取,我们肯定需要某种误差控制 ;我只是在关注输入框-对不起。
页:
[1]
2