Excel Vba缩写[If,For,While,Select]

时间:2015-08-06 19:23:23

标签: excel vba

我想知道是否有某种方法可以缩写代码行,例如:

Sub Test()
    Dim A, B as Integer
    A = 0
    If A = 0 Then B = 1 Else B = 2
End Sub

更新

而不是这样做:

Sub Test()
    Dim A, B as Integer
    A = 0
    If A = 0 Then
        B = 1
    Else
        B = 2
    End if
End Sub

我可以这样做:

Sub Test()
    Dim A, B as Integer
    A = 0
    If A = 0 Then B = 1 Else B = 2
End Sub

我还有什么其他选择可以做类似的事情,但有For,While,Select等等......

由于

4 个答案:

答案 0 :(得分:1)

鉴于VBA中的 True 等于-1,这应该是。

Sub Test()
    Dim A as Integer, B as Integer
    A = 0
    B = 2 + (A = 0)
End Sub

可能有更简洁的方法,但VBA并不以稀疏代码行而闻名。您可以调查Code Golf网站。

答案 1 :(得分:1)

取自答案herehere,您可以使用":"来减少行/组合行的总数,如下所示:

Sub test2()
    Dim i As Long, s As Long
    For i = 1 To 10: s = s + i: Next i: MsgBox s
End Sub

这就是你追求的目标吗?

答案 2 :(得分:1)

您可以使用:开始新的代码行,而无需开始新行。

 Dim i as integer: For i = 1 to 10 : debug.print i : next i

答案 3 :(得分:0)

Sub Test()
    Dim A as Long, B as Long
    A = 0
    B = 2
    If A = 0 Then B = 1
End Sub

这是我做的方式,如果没有别的并且只有一个陈述,你不需要结束。

为什么我会这样做?它非常容易阅读,这意味着其他任何人都可以维护代码。

我确实注意到你没有像任何东西一样昏暗,你必须为每一个都设置类型,而不仅仅是列表中的最后一个。

也不要使用整数,在VBA中使用long。有很多关于原因的文档,你可以更快地谷歌“VBA Long而不是整数”,而不是让我输入全部。