1

我尝试从命名范围中选择多列。我用一些变量构建了应该选择的字符串:

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”变量。即使它是正确的,所选列也不同于字符串中所述的列。

有没有其他方法可以获取命名表的范围,或者有人知道解决方案吗?

4

1 回答 1

1

以下内容应该有所帮助;我已经引用了一个有用的函数,它将列号转换为相应的列字母(信用:将列号转换为字母的函数? @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来选择所需的范围:

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
于 2016-04-22T10:55:41.597 回答