我当前的项目具有全局常量,用于定义此项目将搜索的工作簿中的某些行和列。我已将它们定义为:
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
我认为可以通过定义我自己的类型来完成类似的事情,但这可能不值得。我基本上希望这是一个简单的方法来记住变量名称,因为我编写了更多代码,并且能够计算每组中有多少项目。在这种情况下,类型或集合是否有用?
答案 0 :(得分:6)
对于混合变量类型,您可以将其放在类模块中,将类模块命名为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已经完成了描述枚举here的绝佳工作,如果你还没有发现它们,那么值得一读。
答案 1 :(得分:2)
你可以使用这样的公共数组:
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)
之类的东西就像一个公共变量:
Sub test1()
ColumnNum(team) = 5
End Sub
Sub test2()
Debug.Print ColumnNum(team)
End Sub
如果这两个潜艇按顺序运行,则打印5
。