我正在开发一个用于创建绘图的AutoCAD VBA程序。 但我有一个小问题。如果“案例1”为True则“案例2”必须为假。这是我的代码:
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
请协助
答案 0 :(得分:1)
所以我不确定最终目标是什么,但希望这能让你开始。
我做了什么我已经将“决策制定”隔离到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
答案 1 :(得分:1)
全部删除代码中的:
。他们中的每一个。
它会产生很多问题,尤其是Conditions
。你真的无法追踪正在发生的事情。
通常,:
表示您希望下一行保留在相似的行上。仅当您想要为新声明的变量赋值时才有用:Dim k as long: k = 5
,它的目的是节省空间。
看一下这个主题,你会理解我的意思: VBA - How the colon `:` works in VBA code with condition