2017-03-31 90 views
0

我在子創建自定義使用下面的代碼範圍:界定公共範圍

Dim custom_range(1 To 5) As Range 

Set custom_range(1) = ActiveWorkbook.Sheets("Countries").Columns(5).Cells 
Set custom_range(2) = ActiveWorkbook.Sheets("Operations").Columns(2).Cells 
Set custom_range(3) = ActiveWorkbook.Sheets("Costs").Columns(2).Cells 
Set custom_range(4) = ActiveWorkbook.Sheets("Revenue").Columns(2).Cells 
Set custom_range(5) = ActiveWorkbook.Sheets("FS").Columns(2).Cells 

我面臨的問題是,我使用相同的代碼在幾個潛艇,但我想這樣做只有一次。

創建公用子然後調用它不幸不起作用。

任何想法?

+0

你試過公共custom_range()的變種? –

+0

http://stackoverflow.com/questions/31706754/using-vba-to-assign-range-of-cell-values-to-array-of-variables –

+2

如果你有醜陋,重複,效率低下的代碼按預期工作但是你希望改進它,在[codereview.se]上進行同行評審(所有這些,不僅僅是像這樣的上下文小片段)。描述它的目的,你的設計決定和你的顧慮,評論家將很樂意幫助你使它更高效,可讀,可維護,性能,安全等。 –

回答

1

我可能會在這裏發佈「腐爛的西紅柿」發佈這個,但你可以使用下面的簡單Init子。

只需將它放在一個單獨的代碼模塊中,並且無論您需要使用這些custom_range數組,只需調用此子模塊即可。

代碼(在初始化模塊)

Option Explicit 

Public custom_range(1 To 5) As Range 

Sub Init() 

Set custom_range(1) = ActiveWorkbook.Sheets("Countries").Columns(5).Cells 
Set custom_range(2) = ActiveWorkbook.Sheets("Operations").Columns(2).Cells 
Set custom_range(3) = ActiveWorkbook.Sheets("Costs").Columns(2).Cells 
Set custom_range(4) = ActiveWorkbook.Sheets("Revenue").Columns(2).Cells 
Set custom_range(5) = ActiveWorkbook.Sheets("FS").Columns(2).Cells 

End Sub 
+1

我想扔給你一個多汁的爛番茄,但因爲這一切我們有的上下文,「使用一個全局變量」幾乎是給出的唯一合理可能的答案...所以有一個upvote =)...我希望OP給評論者更多的肉來咀嚼CR。 –