我正在开发一个创建图形的AutoCAD VBA程序。但我有个小问题。如果"Case 1“为True,则"Case 2”必须为false。下面是我的代码:
Sub Pumps()
'Option for type of pump piping
ans = InputBox("1 = STD Piping" & vbCrLf & _
"2 = Omit Pump", "Pump Piping")
Select Case ans
Case "1":
: Set layerObj = ThisDrawing.Layers.Add("PUMP-PIPING STD -" & Size)
layerObj.LayerOn = True
Case "2":
: Set layerObj = ThisDrawing.Layers.Add("OMIT PUMP -" & Size)
layerObj.LayerOn = True
Case Else: MsgBox "Wrong Input Dude.", vbCritical, MSG: Exit Sub
End Select
End Sub请协助
发布于 2017-07-14 20:21:12
所以我不确定最终的目标是什么,但希望这能让你开始。
我所做的是将“决策”隔离到switch块,并设置toggle变量,该变量是稍后完成“工作”所需的。(我会考虑将实际设置layerObj的“工作”转移到另一个Sub
Sub Pumps()
Dim ans As String
'Option for type of pump piping
ans = InputBox("1 = STD Piping" & vbCrLf & _
"2 = Omit Pump", "Pump Piping")
Dim toggle As Boolean
Select Case ans
Case "1": toggle = True
Case "2": toggle = False
Case Else: MsgBox "Wrong Input Dude.", vbCritical, MSG: Exit Sub
End Select
Set layerObj = ThisDrawing.Layers.Add("PUMP-PIPING STD -" & Size)
layerObj.LayerOn = toggle
Set layerObj = ThisDrawing.Layers.Add("OMIT PUMP -" & Size)
layerObj.LayerOn = Not (toggle)
End Sub发布于 2017-07-14 20:27:05
从你的代码中删除所有的:。他们中的每一个。
它带来了很多问题,特别是Conditions。你真的不能跟踪正在发生的事情。
一般而言,:意味着您希望下一行保持在相似的行上。只有当您想要为新声明的变量赋值时,它才有用,比如:Dim k as long: k = 5,它的目的是节省空间。
看看这个主题,你就会明白我的意思:VBA - How the colon : works in VBA code with condition
https://stackoverflow.com/questions/45102216
复制相似问题