Excel VBA:是否可以使用表的变量名称引用表中的列?

时间:2016-11-29 16:07:04

标签: excel vba excel-vba

我的工作表中有一个名为tblMetaData的表。我创建了一个名为rngTblMetaData的Range变量来引用该表。是否可以使用变量引用此表中的列?例如,在下面的代码中,我想引用表中的一列" tblMetaData"标题"曲目名称"。我通常会使用"WsMetaData.Range("tlbMetaData[Track Name]")"执行此操作。是否可以通过使用" rngTblMetaData"来缩短它。变量而不是?谢谢!

前:

Public Wb                               As Workbook
Public WsMetaData                       As Worksheet

Public rngTblMetaData                   As Range

Sub SetVariables()

Set Wb = ThisWorkbook
Set WsMetaData = Wb.Sheets("MetaData")

Set rngTblMetaData = WsMetaData.Range("tlbMetaData")

1 个答案:

答案 0 :(得分:0)

如果您正在使用Excel表(它是一个ListObject),那么您应该这样调暗它。您可以将表视为工作表上的范围,并按照建议引用它,或直接使用ListObject,但这意味着您按编号引用列,因此必须搜索您的标题:

Public Wb As Workbook
Public WsMetaData As Worksheet
Public tblMetaData As ListObject
Public columnData As Range

Sub SetVariables()

    Set Wb = ThisWorkbook
    Set WsMetaData = Wb.Sheets("MetaData")
    Set tblMetaData = WsMetaData.ListObjects("tblMetaData")

    Set columnData = WsMetaData.Range("tblMetaData[Track Names]")
    'or
    Dim columnNumber As Long
    columnNumber = WorksheetFunction.Match("Track Names", tblMetaData.HeaderRowRange, 1)
    Set columnData = tblMetaData.ListColumns(columnNumber).DataBodyRange

End Sub