2014-05-22 39 views
2

我的「問題」是我已經建立了一個數組,該數組從預算矩陣中填充,其中預算可以每個月都波動。我有一個可以正常工作的代碼,可以從每個月獲得預算,但我不禁想到必須有更簡單的方法來填充月份預算變量。簡化使用數組來填充變量

Sub Calculate_CarryOver_To_Date() 

'Get budget for each month 

Dim Expense_Row As Integer 
Dim Expense_Column(12) As Integer 

'Set Settings Cross Hairs To 0 
Expense_Row = 0 
Erase Expense_Column 

'Search for Horizontal Cross Hair 
Expense_Row = Worksheets("Settings").Cells.Find(What:="materials", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Row 

'Error Handle Row To Set Horizontal On 
If Expense_Row = 0 Then 

No_Budget = True 

'Set Error Message 
Financial_Report.Frame2.Visible = False 

Exit Sub 
End If 'End Error Handle 

'Search For Vertical Cross Hair 
Expense_Column(10) = Worksheets("Settings").Cells.Find(What:="January", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(11) = Worksheets("Settings").Cells.Find(What:="February", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(12) = Worksheets("Settings").Cells.Find(What:="March", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(1) = Worksheets("Settings").Cells.Find(What:="April", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(2) = Worksheets("Settings").Cells.Find(What:="May", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(3) = Worksheets("Settings").Cells.Find(What:="June", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(4) = Worksheets("Settings").Cells.Find(What:="July", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(5) = Worksheets("Settings").Cells.Find(What:="August", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(6) = Worksheets("Settings").Cells.Find(What:="September", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(7) = Worksheets("Settings").Cells.Find(What:="October", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(8) = Worksheets("Settings").Cells.Find(What:="November", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Expense_Column(9) = Worksheets("Settings").Cells.Find(What:="December", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 


'Align Cross Hairs To Get Value 
Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(1)).Value 
AprA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(2)).Value 
MayA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(3)).Value 
JunA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(4)).Value 
JulA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(5)).Value 
AugA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(6)).Value 
SepA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(7)).Value 
OctA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(8)).Value 
NovA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(9)).Value 
DecA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(10)).Value 
JanA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(11)).Value 
FebA = Budget_This_Month 

Budget_This_Month = Worksheets("Settings").Cells(Expense_Row, Expense_Column(12)).Value 
MarA = Budget_This_Month 

End Sub 

有沒有辦法通過Expense_column到itterate並以更快的方式填充每月預算變量?

感謝

UPDATE

感謝您的答案,我到底採用的方法是:

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


For i = 1 To 12 
Expense_Column(i) = Worksheets("Settings").Cells.Find(What:=MonthSelect(i), _ 
SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Column 
Budget_Array(i) = Worksheets("Settings").Cells(Expense_Row, Expense_Column(i)).Value 
'MsgBox Budget_Array(i) 'For Testing 

Next i 

然後我可以只是Budget_Array(i)呼籲值。讓我的生活變得如此簡單!謝謝!

+1

是否有可能使一個陣列的每個poition(指數)涉及你想使用的月份?即而不是使用FebA來存儲它,你使用Arr(1)?然後Arr(3)爲四月? – RubberDuck

+0

@ ckuhn203是的,我意識到這可能是最好的辦法,一旦我把我的頭圍繞它。這樣快得多! – SilverShotBee

+0

利亞姆,你應該發佈你的最終解決方案作爲另一個答案,而不是你的問題的一部分。謝謝! – RubberDuck

回答

2

嘗試把它放在一個for循環(我不真正知道與VBA所以我不能提供一個合法的工作VBA代碼,但我嘗試使用手頭的知識),並取代所有數字1至12與我。開創月

For i = 1 To 13 
Expense_Column(i) = Worksheets("Settings").Cells.Find(What:=yourarrayofmonths(i), 
SearchOrder:=xlRows, _ 
SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole).Colum 
Next i 

的字符串數組再次使其在VBA代碼,我確定你理解的概念:)

+1

非常棒Corwin,謝謝!我想我應該考慮使用一個變量作爲數組標識符,但我已經有了這個哈哈很長的幾個星期。 – SilverShotBee

+0

@LiamBee @LiamBee我們都有我們的時刻,但是當你必須按ctrl + c,ctrl + v時,你幾乎可以做這些事情。它只是找到正確的循環。例如,本月的預算可能會以同樣的方式工作。 –