Excel 2010 VBA范围不会从命名表中select正确的数据

我尝试从命名范围中select多个列。 我build立的string应该select一些variables:

Dim onecolumn as Integer, lastcolumn as Integer Dim tblTable as ListObject Dim strforrange as String Set tblTable = Sheet1.ListObjects("Table1") onecolumn = 3 lastcolumn = tblTable.Range.Columns.Count strforrange = tblTable & "[[#All],[Column" & onecolumn & "]:[Column" & lastcolumn - 1 & "]]" Range(strforrange).Select 

我一步一步地运行代码,并检查“strforrange”variables。 即使是正确的,选定的列也不同于string中列出的列。

有没有其他的方式来获得命名表的范围或有人知道这个解决scheme?

以下应该有所帮助; 我已经包含了一个有用的函数的参考,将列号转换为相应的列字母( 函数 : 函数将列号转换为字母?答案由@brettdj)

 Function Col_Letter(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

使用这个函数,你可以使用DataBodyRange函数和Columns起来select所需的范围:

 Sub SelectSpecificDataRange Dim startColumn as Long, lastColumn as Long Dim tblTable as ListObject Dim startColumnLetter, lastColumnLetter as String Set tblTable = Sheet1.ListObjects("Table1") startColumn = 3 startColumnLetter = Col_Letter(startColumn) lastColumn = tblTable.Range.Columns.Count lastColumnLetter = Col_Letter(lastColumn) tblTable.DataBodyRange.Columns(startColumnLetter & ":" & lastColumnLetter).Select End Sub