指定要应用于模块中所有子区域的范围?

时间:2015-06-15 16:25:34

标签: excel vba

我一直致力于创建一个具有多个子函数的模块,这些子函数和函数都应用于同一个工作表。在我清理代码的努力和研究中,我发现不是宣布" Dim"对于每个sub,我可以使用" Dim"在模块的最顶层声明它。或者"私人"。

Sub Sample()   
Dim DataSheet As Range
'Only declared for this sub, doesn't apply to other subs

'on the other hand,

Private DataSheet As Range
Sub Sample()
'declares it for each sub in this module.

我无法弄清楚的是,有没有办法设置值,或者在这种情况下,我想要分配的确切范围" DataSheet"这将适用于整个模块?目前我的每个潜艇都包含,

Set DataSheet = ThisWorkbook.Sheets(1).Range("A3:FU5002")

,因为这个范围是恒定的而且永远不会改变,所以看起来有点多余。

2 个答案:

答案 0 :(得分:1)

创建一个特殊的子进行初始化并首先运行它:

Dim DataSheet As Range

Sub RunMeFirst()
    Set DataSheet = ThisWorkbook.Sheets(1).Range("A3:FU5002")
End Sub

答案 1 :(得分:0)

在ThisWorkbook模块中添加一个全局变量,并使用工作簿打开事件来设置值。

Public DataSheet As Range
Private Sub Workbook_Open()
    Set DataSheet = ThisWorkbook.Sheets(1).Range("A3:FU5002")
End Sub