VBA循环效率

斯坦利·劳

我已经使用了很多次在网站上找到的答案,但这是我的第一篇文章。

在函数或子内部执行for循环还是仅将循环的增量值作为参数发送到函数或子中,效率更高?

我将一些文本数据文件导入Excel,解析出各个字段,然后将某些字段拆分为单个字符。我使用的一个文件是医生名单。我有姓名,地址,电话,DEA号,NPI等。

在检查DEA编号时,我有一个接收要检查的行号的子程序,它将DEA分成其各个数字,一次对这些数字执行一次检查,然后用该DEA的状态修改另一个字段。如果状态单元格中包含单词“ GOOD”以外的任何内容,则该单元格将显示为红色。另外,我正在为不好的单个数字上色(如果适用)。

这个潜艇做得很厉害,我可能会对其进行分解,但是在医生文件中没有其他地方可以执行此确切步骤,因此我认为应该保持原样。

无论如何,真正的问题是我应该将行号发送到sub中还是应该只调用sub并让sub计算行数并进行检查。在第一种情况下,我将调用sub的次数等于Doctor文件中的行数。在第二个中,我将调用一次sub,并且sub包含每行的for循环。通常这更有效。

抱歉,如果我看起来很多余。我训练了一些复杂的软件,有时这种事情会渗入生活的其他领域。

编辑:我试图将其添加到评论中,但没有足够的经验在此处发布。抱歉,如果我违反了某些规定...

这是我当前用于调用sub的代码:

'Use the Doctor Last Name as the number of rows count
Dim numRows As Integer
numRows = Application.CountA(Sheets("DoctorDEA").Range("m:m"))

'lineCtr is the Line Counter used to iterate the FOR loops
Dim lineCtr As Integer
    lineCtr = 1

'Call DEACHecking and DisplayIssues Subs
For lineCtr = 1 To numRows - 1
    DEAChecking (lineCtr)
    DisplayIssues (lineCtr)
Next lineCtr

我的问题是:最好是不带任何参数调用DEAChecking,让DEAChecking计算行号,然后使用FOR循环还是将其保持不变?

约翰·阿列克修

现在这个问题太广泛了,无法有效回答。因此,我只是提供一些小的见解,可以帮助您构建程序。

通常,最有效的代码是所有变量都尽可能局部化的代码。如果在循环中使用全局变量或调用其他函数,则将比使用局部变量执行所有计算更加糟糕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章