我想設置一個VBA循環函數,它將遍歷許多特定的工作表,在每個工作表內執行一個嵌套循環。嵌套循環是一個sumif函數,我需要將其存儲在sumHACC
中,直到每個工作表都被循環遍歷,並將最終值(每個sumif的和)輸入到一個單元格中。Excel VBA循環通過特定工作表與子循環
嵌套循環在不同if條件下自己使用(請參閱底部的'ALL OTHER FUNDERS
),但我努力在循環中嵌套它以在不同的工作表中迭代它 - 雙循環處於'IF HACC IS SELECTED
。
For Each HACC In HACCRange
Set calcTab1 = Sheets(HACC)
而這正是我接收類型:每個片材的需要通過存儲在細胞D6:D19
,我拉進HACCRange
成環,並且我通過這些片試圖環與姓名不匹配錯誤。本節中的代碼並不完整(即sumHACC沒有更新),因爲我完全搞清楚瞭如何使其工作!
在技術上有一個循環(sumif條件下移一個列表(引用)),但這似乎不是問題。任何援助將不勝感激!
Sub FunderLevel()
Dim reference As Range
Dim Funder As String
Dim itemRef1 As Range
Dim itemRef3 As Range
Dim calcTab1 As Worksheet
Dim calcTab3 As Worksheet
Dim sumCol As Range
Dim printCalc As Range
Dim HACCRange As Range
Dim QCCRange As Range
i = 21
Set reference = Range("A21:A22")
Funder = Range("A10")
'IF HACC IS SELECTED
If Funder = "HACC" Then
sumHACC = 0
Set HACCRange = Sheets("Reference Sheet").Range("D6:D19")
For Each HACC In HACCRange
Set calcTab1 = Sheets(HACC)
Set itemRef1 = calcTab1.Range("A10:A500")
myCol = calcTab1.Rows(7).Find(What:="All", LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
With calcTab1
Set sumCol = calcTab1.Range(.Cells(10, myCol), .Cells(500, myCol))
End With
For Each Cell In reference
Set printCalc = Cells(i, 2)
printCalc = WorksheetFunction.SumIf(itemRef1, Cell, sumCol)
i = i + 1
Next Cell
Next HACC
'ALL OTHER FUNDERS
Else:
Set calcTab3 = Sheets(Funder)
Set itemRef3 = calcTab3.Range("A10:A500")
myCol = calcTab3.Rows(7).Find(What:="All", LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Colum
With calcTab3
Set sumCol = calcTab3.Range(.Cells(10, myCol), .Cells(500, myCol))
End With
For Each Cell In reference
Set printCalc = Cells(i, 2)
printCalc = WorksheetFunction.SumIf(itemRef3, Cell, sumCol)
i = i + 1
Next Cell
End If
End Sub
你的問題很混亂,我懷疑,過長。我建議您回到繪圖板並手動佈置(無代碼)您的一般流程算法。你會如何期待數據流動?事實證明,在你回去使用這些值之前,你需要首先完成你的整個循環才能找到值。你需要將變量存儲在一個數組下而不是一個變量下?然後,如果這不起作用,請儘量減少代碼的縮小部分,同時仍然會產生錯誤。 –