案例陈述是真是假?

时间:2017-07-14 11:47:01

标签: vba excel-vba autocad excel

我正在开发一个用于创建绘图的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

请协助

2 个答案:

答案 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