Excel 代码名作为常量?

Excel 代码名作为常量?,excel,vba,constants,excel-2016,Excel,Vba,Constants,Excel 2016,我在一个数据库中有多个函数/过程,这些函数/过程引用了一个名为数据表的代码名 Public Sub LoadRecords() '***Caution: The 'DataSheet' CodeName is hardcoded (in multiple places).*** With DataSheet.ListObjects(tblName) 'Some code Next End With End Sub Function Co

我在一个数据库中有多个函数/过程,这些函数/过程引用了一个名为
数据表
的代码名

Public Sub LoadRecords()
    '***Caution: The 'DataSheet' CodeName is hardcoded (in multiple places).***
    With DataSheet.ListObjects(tblName)
        'Some code 
        Next
    End With
End Sub

Function ConcatVars(RowNum As Integer) As String
    '***Caution: The 'DataSheet' CodeName is hardcoded (in multiple places).***
    For Each Column In DataSheet.ListObjects(tblName).ListColumns
        'Some code
    Next
End Function
问题:

有没有办法将代码名声明为常量

  • 原因:如果要更改代码名,VBA代码中的引用可能会在一个非常明显的地方更新

我所尝试的:

如果我将代码名放在常数中:

Public Const codeName = "DataSheet"
With codeName.ListObjects(tblName)
并尝试引用该常数:

Public Const codeName = "DataSheet"
With codeName.ListObjects(tblName)
我得到这个错误:

编译错误:限定符无效

只需定义一个函数(并避免使用相同的函数或变量名重载现有的CodeName属性):

函数myCodeName()作为工作表

设置myCodeName=DataSheet’使用代码名与选项卡名的主要区别在于,您不会更改代码名(并且您的用户不会意外更改它)。如果您想要类似的内容,您可以定义一个返回工作表的函数:只需要在该函数中定义代码名。只需看到您的注释与我的答案相同:)还值得注意的是,如果您(例如)向工作表添加任何控件,您可能会将其称为(例如)
DataSheet.lstNames
那么,如果在其位置使用通用的“工作表”变量,则可能会导致问题(因为OOB工作表没有
lstNames
成员)