2017-07-20 44 views
2

我想聲明一種全局變量。我想要做的是初始化這些變量,然後在宏中使用它們,並在其他宏中更改它們的值。公共還是常量?

我開始寫它作爲公共變量:

Option Explicit 
'definition of global variables 
Public r_start As Integer 
Public r_end As Integer 
Public c_little As Integer 
Public c_big As Integer 
Public c_sel_start As Integer 
Public c_sel_end As Integer 
Public c_data_start As Integer 
Public c_data_end As Integer 

Public Sub Init_Globals() 
' Access global variable initialization 
    r_start = 20 
    r_end = 833 
    c_little = 6 
    c_big = 5 
    c_sel_start = 1 
    c_sel_end = 4 
    c_data_start = 11 
    c_data_end = 101 
End Sub 

這裏的問題是,我在我的每個子過程的調用Sub_Init_Globals(),所以如果我想改變的初始值我其他SubProcedures內的全局變量,將不會做出這些更改。

你知道一種創建這種變量的方法嗎?

+0

一種方法是使用包含變量的類模塊,並實例化該類模塊的一個實例。但這仍然容易受到「項目重置」的影響。 – Bathsheba

+0

在Workbook_Open()事件中調用Init_Globals()是一種方法。 –

回答

1

據我所知,這些僅僅是開始值什麼離開你的下一個選項:
1)您可以聲明這些變量並在Workbook_Open子分配值。
更多這裏Is it possible to declare a public variable in vba and assign a default value?
2.)創建單獨的工作表,這些工作表將被隱藏,並且支持表由這些值組成,在這種情況下,即使在關閉工作簿後,這些值的所有更改也會被保存。
3.)聲明常量並將其值分配給程序中的不同變量。

+1

「我只是簡單地發表評論,但可惜我不行:/」 - 通常我會說「你不能評論的事實不是通過將評論作爲」答案「來濫用系統的原因,而是你的帖子已經接近答案了。所以,最好從答案中刪除這條線(如果我沒有看到它,我不會知道這不是一個真正的答案),並可能只是「整理」其餘的一點。 – YowE3K

+0

謝謝你的回答,我想做一些非常乾淨的事情,這意味着要在我的公司使用。我會嘗試單元格在替代表單中進行初始化。 –

+1

感謝您的回覆。我理解禁止新用戶發表評論的政策,但這種政策讓我無法要求代碼示例或截圖,因此我必須即興創作並提供「通用」解決方案。 – AntiDrondert