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
成员)