以结构化的方式命名全局variables

我目前的项目有全局常量,这些项目将在工作簿中定义特定的行和列。 我已经这样定义了他们:

Public Const headRow As Integer = 1 Public Const descRow As Integer = 2 Public Const pnumCol As Integer = 1 Public Const teamCol As Integer = 2 Public Const dateCol As Integer = 3 Public Const hourCol As Integer = 4 Public Const typeCol As Integer = 5 Public Const taskCol As Integer = 6 Public Const noteCol As Integer = 7 

我想知道是否有一个更清晰的方式来定义这些将允许我写这些方式,如:

 ColumnNums.team ColumnNums.task ColumnNums.note 'etc 

我认为类似的东西可以通过定义我自己的types来完成,但这可能不值得。 我基本上希望这是一个简单的方法来记住variables名称,因为我写更多的代码,以及能够计数我有在每个组中有多less项目。 types或集合在这种情况下会有用吗?

对于混合variablestypes,可以将它放在类模块中,命名类模块ColumnNumbers并将以下代码放入:

 Public Property Get Team() As Long Team = 1 End Property Public Property Get TeamName() As String TeamName = "Team One! :-)" End Property 

那么你可以在任何模块中使用它:

 Dim colNums As New ColumnNumbers Sub foo() MsgBox colNums.Team End Sub 

如果你只想返回long值,把它放在一个枚举:

 Enum ColumnNumbers Team = 1 Description = 2 End Enum Sub foo() MsgBox ColumnNumbers.Team End Sub 

Chip Pearson在描述枚举方面已经做得非常出色,如果你还没有发现它,那么值得一读。

你可以使用这样的公共数组:

 Public ColumnNum(0 To 2) As Long Public RowNum(0 To 2) As Long 

与枚举一起使用:

 Public Enum Category team task note 'etc. End Enum 

然后像ColumnNum(team)这样的东西就像一个公共variables:

 Sub test1() ColumnNum(team) = 5 End Sub Sub test2() Debug.Print ColumnNum(team) End Sub 

如果这两个潜艇是按照比5打印的顺序运行的。