私のプロジェクトでは、Select Case として設定した 3 つのシートを持つ 2 つの関数があります。各機能は 3 枚に分かれています。これらの手順は、データを Excel ワークブックにインポートし、そのデータをフォーマットして分析を実行する、より大きなプログラムの一部です。したがって、各サブを実行するときに従う必要がある段階的な順序があります。
その理由は、1 つのシートに発生することは、関数内の他の 3 つにも発生する必要があるためです。たとえば、1 つがソートされている場合、3 つすべてをソートする必要があります。それを念頭に置いて、最初の関数の B6:AH6 からのデータを 3 つのシートで自動入力する手順を用意しました。
ここにあります:
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 ループを 2 回記述する代わりに、両方の Select Case インデックスを 1 つのループに結合し、オートフィルを実行することです。
これを行うことができますか、またはより良い方法がありますか?