以结构化的方式命名全局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
打印的顺序运行的。