2016-11-29 93 views
0

我在我的工作表中有一个名为tblMetaData的表。我创建了一个名为rngTblMetaData的Range变量来引用此表。是否可以使用变量引用此表中的列?例如,在下面的代码中,我想引用表“tblMetaData”中标题为“Track Name”的列。我通常会用"WsMetaData.Range("tlbMetaData[Track Name]")"来做到这一点。是否可以通过使用“rngTblMetaData”变量来缩短这一点?谢谢!Excel VBA:是否可以使用表的变量名引用表中的列?

例:

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") 

回答

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 
相关问题