您知道如何在VBA代码中标记行吗?

时间:2019-03-11 15:16:34

标签: excel vba

我想区分我的VBA代码中的行,尤其是配对命令。我尝试级联它们,但是当我在其他循环中有更多的循环时,尽管我付出了一些努力,但有时我还是迷失了哪个配对代码所属/结束于哪里。有什么办法用颜色标记线条吗?所以我可以按颜色区分配对命令?

谢谢。

杰克

3 个答案:

答案 0 :(得分:3)

不幸的是,VBA编辑器中没有功能可以匹配 if 和结束的 endif 。 我使用Rubberduck,这是VBA的免费附件。有了它,您可以轻松缩进代码并使代码更具可读性。

之前:

Option Explicit

Function test(a As Integer)
Dim b As Integer

    b = 1
     If a > 1 Then
   b = 2
    If a > 21 Then
b = 3
Else
b = 4
    End If
       End If
    test = b
End Function

经过Rubberduck处理:

Option Explicit

Function test(a As Integer)
    Dim b As Integer

    b = 1
    If a > 1 Then
        b = 2
        If a > 21 Then
            b = 3
        Else
            b = 4
        End If
    End If
    test = b
End Function

它还可以做更多的事情。 您可以在这里下载:http://rubberduckvba.com/

答案 1 :(得分:2)

本身没有标记功能。 将注释功能与撇号一起使用以制作部分

例如

'~~~~~PRINT FILE~~~~~~

'~~~~~CLOSE~~~~~~

答案 2 :(得分:2)

如建议的那样,使用压头来实施一致的压痕。存在一些提供此功能的VBIDE加载项,包括原始的Smart Indenter(免费,仅32位)和here(免费,开源,也可在64位主机上工作)-我是贡献者)。

编写较小的过程

为满足其名称所作出的承诺而需要做的事只需。做一件事情的程序通常做得很好,而且很容易有意义地命名。

如果有嵌套循环,则可以将内部循环提取到其自己的作用域中。如果嵌套循环具有条件,则可以重构每个条件分支并将其提取到自己的作用域中。可能的结果是,您最终删除了冗余代码,因为很多时候您从一个分支中提取的内容与您从另一个分支中提取的内容非常相似,请保存一些参数值,一旦重构,就成为实际参数;程序变得更小,更专业,它们做的很少,以至于命名起来很简单:“此程序执行X”,并且从代码中清晰可见。

重构箭头代码

Jeff Atwood的出色文章标题为Rubberduck。如果您的代码如下所示:

'~~~~~~BANNER COMMENTS~~~~~

...您有箭头代码。有已知的,有据可证明的技术可以真正地增强这种代码,而If SomeImportantCondition Then 'procedure body End If 并不是其中一种。

  1. 用保护子句代替条件。

    If Not SomeImportantCondition Then Exit Sub / Err.Raise ...
    'procedure body
    

    成为:

    {{1}}
  2. 将条件块提取到它们自己的范围内。

  3. 反转条件以减少嵌套。

  4. 如果可以的话,请尽早返回/退出。

目标是尽可能减少水平滚动,并减少嵌套环复杂度-这是真实,可衡量的指标可以采取行动。

Rubberduck code metrics

评论是说为什么,而不是什么。让代码说什么