【发布时间】:2016-06-22 17:52:59
【问题描述】:
我有一堆用于工作表的子例程,它们的开始和结束方式都完全相同。它们基本上都遍历表中的每一行并对每一行执行一些独特的操作。我不希望它们每次都运行,而是希望能够单独调用它们。
实际代码如下所示:
Sub randomSub()
Dim finalRow As Long
Dim i As Long
finalRow = Sheet.Cells(Rows.count, Column).End(xlUp).row
With Sheet2
For i = 3 To finalRow
' Do some random operations here
Next i
End With
End Sub
将代码设置为循环遍历每一行并不难,但在 4 或 5 个不同的潜艇上重复它之后,我想有更好的方法。
所以我想我的问题是这样的:有没有一种最佳做法可以避免为我制作的每个新子程序一遍又一遍地编写这样的循环设置?
编辑:这是我正在执行的操作类型的一些示例,通常会替换 ' Do random operations here
Sub moveToFront()
Dim stringHolder() As String
stringHolder = Split(Sheet2.Cells(i, 11), "; ")
If stringHolder(1) = "" Then
.Cells(i, 11) = stringHolder(0)
Else
.Cells(i, 11) = stringHolder(1) & "; " & stringHolder(0)
End If
End Sub
还有一个
Sub fillInTotals()
If .Cells(i, 3) <> "" Then
.Cells(i, 1) = "='EUS Graph'!$C$" & _
Application.WorksheetFunction.Match(.Cells(i, 3), Sheet4.Range("$A:$A"), 0)
Else
.Cells(i, 1) = "='EUS Graph'!$C$"
End If
End Sub
【问题讨论】:
-
专业提示:创建一个帐户并在Code Review 的完整上下文中发布您的实际工作代码,让标题说明您的代码正在解决什么问题 i>,向审阅者解释代码在做什么以及为什么,您将获得有关代码各个方面的反馈和建议,包括提取方法和参数化过程代码的方法。