首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Case语句是对还是错?

Case语句是对还是错?
EN

Stack Overflow用户
提问于 2017-07-14 19:47:01
回答 2查看 1K关注 0票数 0

我正在开发一个创建图形的AutoCAD VBA程序。但我有个小问题。如果"Case 1“为True,则"Case 2”必须为false。下面是我的代码:

代码语言:javascript
复制
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

请协助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-14 20:21:12

所以我不确定最终的目标是什么,但希望这能让你开始。

我所做的是将“决策”隔离到switch块,并设置toggle变量,该变量是稍后完成“工作”所需的。(我会考虑将实际设置layerObj的“工作”转移到另一个Sub

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-07-14 20:27:05

从你的代码中删除所有的:。他们中的每一个。

它带来了很多问题,特别是Conditions。你真的不能跟踪正在发生的事情。

一般而言,:意味着您希望下一行保持在相似的行上。只有当您想要为新声明的变量赋值时,它才有用,比如:Dim k as long: k = 5,它的目的是节省空间。

看看这个主题,你就会明白我的意思:VBA - How the colon : works in VBA code with condition

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45102216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档