VBA – 使用数字select列?

我正在寻找这个code的替代品,但使用数字。 我想select5列,起始列是一个variables,然后从中select5列。

 Columns("A:E").Select 

我如何使用integers来引用列? 像下面的东西?

 For n = 1 to 5 Columns("n : n + 4") .select do sth next n 

谢谢。 Gemmo

你可以使用这样的大小:

 For n = 1 To 5 Columns(n).Resize(, 5).Select '~~> rest of your code Next 

在您所做的任何范围操作中,始终保持您resize和偏移属性的后面。

 Columns("A:E").Select 

可以直接replace

 Columns(1).Resize(, 5).EntireColumn.Select 

其中1可以被一个variablesreplace

 n = 5 Columns(n).Resize(, n+4).EntireColumn.Select 

在我看来,你最好处理一个列块,而不是循环遍历n到n + 4列,因为它更有效率。

另外,使用select会减慢你的代码。 因此,不要select您的列,然后对select执行操作,而是直接执行操作。 以下是将AE列的颜色更改为黄色的示例。

 Columns(1).Resize(, 5).EntireColumn.Interior.Color = 65535 

你可以使用cells range来获得你想要的效果(但是如果你不需要,最好不要使用select)

 For n = 1 to 5 range(cells(1,n).entirecolumn,cells(1,n+4).entirecolumn).Select do sth next n 

尝试使用以下内容,其中n是您的variables,x是您的偏​​移量(本例中为4):

 LEFT(ADDRESS(1,n+x,4),1) 

这将返回该列的字母(所以对于n = 1和x = 4,它将返回A + 4 = E)。 然后你可以使用INDIRECT()来引用它,如下所示:

 COLUMNS(INDIRECT(LEFT(ADDRESS(1,n,4),1)&":"&LEFT(ADDRESS(1,n+x,4),1))) 

其中n = 1,x = 4变成:

 COLUMNS(INDIRECT("A"&":"&"E")) 

所以:

 COLUMNS(A:E) 

您可以指定地址为“R1C2”而不是“B2”。 在文件 – >选项 – >forms – >与公式工作有一个切换R1C1参考样式 。 可以设置,如下图所示。

在这里输入图像说明

在下面的示例代码中,我只使用variables来显示命令如何用于其他情况。

 FirstCol = 1 LastCol = FirstCol + 5 Range(Columns(FirstCol), Columns(LastCol)).Select 

不需要循环或这样的..试试这个..

 dim startColumnas integer dim endColumn as integer startColumn = 7 endColumn = 24 Range(Cells(, startColumn), Cells(, endColumn)).ColumnWidth = 3.8 ' <~~ whatever width you want to set..* 

通过这种方式,您可以开始select数据,即使在“Z”列后面也可以select很多列。

 Sub SelectColumNums() Dim xCol1 As Integer, xNumOfCols as integer xCol1 = 26 xNumOfCols = 17 Range(Columns(xCol1), Columns(xCol1 + xNumOfCols)).Select End Sub