VBA用于在excel表格中选择多个列
正如我所了解到的,以下代码可用于选择VBA用于在excel表格中选择多个列,excel,excel-tables,vba,Excel,Excel Tables,Vba,正如我所了解到的,以下代码可用于选择表1中第3列的数据体: ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Select 我需要帮助一起选择多个列——比如第3列到第5列,或者第X列到第X+3列 使用问题的答案,我通过使用实际的列名,成功地做到了一半: Range("Table1[[Column3]:[Column5]]").Select 但是我需要能够使用列号而不是名称,因为它们将是函数的结果(即列X到X+d)。对
表1
中第3列的数据体:
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Select
我需要帮助一起选择多个列——比如第3列到第5列,或者第X列到第X+3列
使用问题的答案,我通过使用实际的列名,成功地做到了一半:
Range("Table1[[Column3]:[Column5]]").Select
但是我需要能够使用列号而不是名称,因为它们将是函数的结果(即列X到X+d)。对于连续范围,只需调整单个列的大小即可
ActiveSheet.ListObjects("Table1").ListColumns(3).DataBodyRange.Resize(, 3).Select
对于更复杂的选择,请使用Union在.Select过程之前收集它们
With ActiveSheet.ListObjects("Table1")
Union(.ListColumns(3).DataBodyRange, _
.ListColumns(4).DataBodyRange, _
.ListColumns(5).DataBodyRange).Select
End With
有关更好的方法,请参阅。在DataBodyRange上使用Columns方法,该方法可以采用相对表范围,例如
“a:B”
因此,如果需要前两列,可以编写:ActiveSheet.ListObjects(“Table1”).DataBodyRange.columns(“A:B”)。选择
但是,如果您想根据相对列数进行选择,该怎么办?
创建几个函数以将数字转换为此字符串:
Sub selectMultipe()
ActiveSheet.ListObjects("Table1").DataBodyRange.Columns(getRangeStr(1, 2)).Select
End Sub
'Get Range String
Function getRangeStr(startColNum As Long, endColNum As Long) As String
startCol = ColLtr(startColNum)
endCol = ColLtr(endColNum)
getRangeStr = startCol + ":" + endCol
End Function
'Convert column number to letter
Function ColLtr(iCol As Long) As String
If iCol > 0 And iCol <= Columns.Count Then ColLtr = Replace(Cells(1, iCol).Address(0, 0), 1, "")
End Function
Sub-selectMultipe()
ActiveSheet.ListObjects(“Table1”).DataBodyRange.Columns(getRangeStr(1,2))。选择
端接头
'获取范围字符串
函数getRangeStr(startColNum为长,endColNum为长)为字符串
startCol=ColLtr(startColNum)
endCol=ColLtr(endColNum)
getRangeStr=startCol+“:”+endCol
端函数
'将列号转换为字母
函数ColLtr(iCol长度)作为字符串
如果iCol>0和iColRange(Cells([rowNum]、[colNum])、Cells([rowNum]、[colNum])
?尝试:Range(“表1[[Column]&CStr(X)和]:[Column”&CStr(X+d)和“]])。选择
@BruceWayne这会起作用,但我必须处理行号,因此不会使用表功能(例如,选择表列)@RafaelMatos如果这些是实际的列名,你的建议就行了。在其他情况下可能会这样,因为这些是默认名称,在我的情况下,它们只是一个示例,实际名称不同。通常,通过拆分$symbol上的绝对地址并获取数组的第二个元素来检索“列字母”,但是这对我目前的需求来说有点复杂,但在其他情况下可能会有用-谢谢!调整大小…搞定了!!