2015-08-20 162 views
0

我想設置一個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 
+0

你的問題很混亂,我懷疑,過長。我建議您回到繪圖板並手動佈置(無代碼)您的一般流程算法。你會如何期待數據流動?事實證明,在你回去使用這些值之前,你需要首先完成你的整個循環才能找到值。你需要將變量存儲在一個數組下而不是一個變量下?然後,如果這不起作用,請儘量減少代碼的縮小部分,同時仍然會產生錯誤。 –

回答

2

試試這個:

For Each HACC In HACCRange.Cells 
    Set calcTab1 = Sheets(HACC.value) 
+0

非常感謝!這正是我所做的錯誤。對長期/混亂的問題抱歉!乾杯。 – smrobertson

+0

@smrobertson可以隨時標記爲答案。 –