2015-04-24 26 views
0

我有下面的代碼我試圖放在一起,我跑到運行時錯誤'9'下標超出範圍。這確實可以解決第一次運行錯誤。我不明白爲什麼它不允許字符串前進。從我正在閱讀它應該通過應用程序更改X值與Y值1,並完成時,設置爲轉到下一個Y,並再次啓動整個過程,直到Y的結束。任何幫助,將不勝感激。在一個應用程序中使用兩個數組並進行數組

Dim Cat(1 To 10) As String 

Cat(1) = "010" 'SD 
Cat(2) = "020" 'FD 
Cat(3) = "050" 'WVID 
Cat(4) = "040" 'VID 
Cat(5) = "030" 'MEM 
Cat(6) = "080" 'ACC 
Cat(7) = "060" 'HDMI 
Cat(8) = "070" 'SSD 
Cat(9) = "090" 'POWER 
Cat(10) = "990" 'ZRM 

Dim Month(1 To 12) As String 
Month(1) = "January" 
Month(2) = "February" 
Month(3) = "March" 
Month(4) = "April" 
Month(5) = "May" 
Month(6) = "June" 
Month(7) = "July" 
Month(8) = "August" 
Month(9) = "September" 
Month(10) = "October" 
Month(11) = "November" 
Month(12) = "December" 

For Y = 1 To UBound(Cat) 
    For X = 1 To UBound(Month) 
     Month(X) = Application.WorksheetFunction.SumIf(Sheets(Month(X)).Columns("AO"), Cat(Y), Sheets(Month(X)).Columns("AG")) 
    Next X 
    Cells(3 + Y, 41).Value = Application.WorksheetFunction.Sum(Month(1), Month(2), Month(3), Month(4), Month(5), Month(6), Month(7), Month(8), Month(9), Month(10), Month(11), Month(12)) 
Next Y 

End Sub 
+1

這是什麼語言? – Machavity

回答

0

在通過X編制了索引計算存儲在表「一月」的數據的條件的總和循環中的第一次運行。然後用Month(X)中的值重寫「January」。假設這個值是42.在你的下一個循環中,42是在Month(X),所以你正在尋找Sheets(42),這可能不是一個有效的工作表。我會試試這個。

dim temp as double 
For Y = 1 To UBound(Cat) 
    temp = 0# '0 as a double. 
    For X = 1 To UBound(Month) 
     temp = temp + Application.WorksheetFunction.SumIf(Sheets(Month(X)).Columns("AO"), Cat(Y), Sheets(Month(X)).Columns("AG")) 
    Next X 
    Cells(3 + Y, 41).Value = temp 
Next Y 

這樣我們不需要存儲每張紙上的所有金額,因爲我們只用它們將它們加在一起。

+0

這工作。非常感謝你。 – DanielG

相關問題