Excel 您知道如何在VBA代码中标记行吗?
我想区分VBA代码中的行,特别是pair命令。我尝试级联它们,但尽管我付出了努力,但有时当我在其他周期中有更多的周期时,我会弄不清楚代码属于哪一对/结束在哪里。有没有办法用颜色标记线条?这样我就可以通过颜色来区分配对命令了 多谢各位Excel 您知道如何在VBA代码中标记行吗?,excel,vba,Excel,Vba,我想区分VBA代码中的行,特别是pair命令。我尝试级联它们,但尽管我付出了努力,但有时当我在其他周期中有更多的周期时,我会弄不清楚代码属于哪一对/结束在哪里。有没有办法用颜色标记线条?这样我就可以通过颜色来区分配对命令了 多谢各位 杰克本身没有标记功能。 使用带有撇号的Comment函数创建节 乙二醇 etc不幸的是,VBA编辑器中没有匹配if和结束endif的功能。 我使用Rubberduck,一个VBA的免费附加组件。使用它,您可以轻松地缩进代码并使其更具可读性 之前: Option Ex
杰克本身没有标记功能。 使用带有撇号的Comment函数创建节 乙二醇
etc不幸的是,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
它还可以做更多的事情。
您可以在这里下载:正如建议的那样,使用压头强制执行一致的压入。存在几个提供此功能的VBIDE外接程序,包括原始的Smart Indenter(免费,仅32位)和(免费,开源,也可在64位主机上工作-我是一个贡献者) 编写更小的程序 尽可能少地履行以其名义作出的承诺的程序。做一件事的过程通常做得很好,并且很容易有意义地命名 如果有嵌套循环,则可以将内部循环提取到其自己的范围中。如果嵌套循环有一个条件分支,则可以重构每个条件分支并将其提取到自己的范围中。可能的结果是,您最终删除了冗余代码,因为很多时候,您从一个分支中提取的内容与从另一个分支中提取的内容非常相似,保存一些参数值,这些参数值一旦重构,就会变成实际参数;过程变得越来越小,越来越专业化,它们所做的事情太少,以至于给它们命名变得很简单:“这个过程做X”,从代码中可以清楚地看到这一点 重构箭头代码 杰夫·阿特伍德(Jeff Atwood)有一篇优秀的文章,题为。如果您的代码如下所示:
If ...
If ...
If...
For ...
For ...
If ...
...
End If
Next
Next
End If
End If
End If
…你有箭头代码。有一些已知的、文档化的技术可以真正增强这些代码,“~~~~~~~~~~~~~~~
不是其中之一
If SomeImportantCondition Then
'procedure body
End If
变成:
If Not SomeImportantCondition Then Exit Sub / Err.Raise ...
'procedure body
评论是为了说明原因,而不是什么。让代码说什么。我建议您使用智能压头这样的压头工具,并养成在写入起始块后立即写入结束块的习惯。@Rory原始智能压头仅在32位主机中工作。官方64位端口是now的一部分:)@MathieuGuindon是的,但大多数人使用32位Office我们使用64位,我会试试Rubberduck,谢谢你们。b永远不会是2;)。在任何情况下,Rubberduck都是一个不错的工具。我已经完成了区块开发,将在几周内将该功能发布到Rubberduck;这将使VBE在您键入
If时自动添加,例如End If
。。。{ENTER}
无论何时添加这样的注释,您都错过了将代码拉入更小、更专业的过程的机会,这些过程做得更少,失败的原因也更少。@MathieuGuindon是否还有这样的地方?如果出于测试目的(例如,随机数据)插入代码,我会标记代码的一小部分,以确保以后更容易拉出非生产代码。@MathieuGuindon我同意你的看法。我想我指的是评论技术的适用性,而不是内容。@SmrtGrunt好的,我会尽量说得更清楚:“横幅评论”说的是什么,而不是为什么——根据定义,它们是不好的评论,它们会分散代码的注意力,并尖叫“我的过程做了太多事情”。
If Not SomeImportantCondition Then Exit Sub / Err.Raise ...
'procedure body