在我的项目中,我有 2 个函数,每个函数都有 3 个工作表,我已将它们设置为 Select Case。每个功能分为 3 张。这些过程是一个更大的程序的一部分,该程序将数据导入 Excel 工作簿,然后格式化该数据以执行一些分析。因此,在执行每个子程序时必须遵循一个逐步的顺序。
原因是因为发生在一张纸上的任何事情都必须发生在函数中的其他 3 张纸上。例如,如果一个已排序,则所有 3 个都必须排序。考虑到这一点,我有一个程序可以在第一个函数中用三张纸自动填充 B6:AH6 中的一些数据。
这里是:
Public Function EmployeeSheets(Index As Long) As Excel.Worksheet
'This function indexes all of the Employee sheets
'to use in various loops during he instal process
'@param EmployeeSheets, are the sheets to index
Select Case Index
Case 1 : Return xlWSAllEEAnnul
Case 2 : Return xlWSAllEEHourly
Case 3 : Return xlWSAllEESalary
End Select
Throw New ArgumentOutOfRangeException("Index")
End Function
Sub copyFormulas()
Dim eeRefSheets As Excel.Worksheet
For i As Long = 1 To 3 Step 1
eeRefSheets = EmployeeSheets(i)
With eeRefSheets
Dim lngLr As Long
lngLr = .Cells.Find(What:="*", SearchDirection:=Excel.XlSearchDirection.xlPrevious, SearchOrder:=Excel.XlSearchOrder.xlByRows).Row
.Range("B6:AH6").AutoFill(.Range("B6:AH" & lngLr), Excel.XlAutoFillType.xlFillDefault)
End With
Next i
End Sub
所以那里没有问题,一切正常。除了现在我必须对这些工作表做同样的事情:
Public Function PositionSheets(Index As Long) As Excel.Worksheet
'This function indexes all of the Position sheets
'to use in various loops during he instal process
'@param PositionSheets, are the sheets to index
Select Case Index
Case 1 : Return xlWSAllPositionAnnul
Case 2 : Return xlWSAllPositionHourly
Case 3 : Return xlWSAllPositionSalary
End Select
Throw New ArgumentOutOfRangeException("Index")
我想做的不是两次编写我的 For 循环,而是将两个 Select Case 索引合并到一个循环中并执行自动填充。
可以这样做,还是有更好的方法?