2014-09-30 34 views
12

我正在尋找這種code的替代品,但使用數字。 我想選擇5列,起始列是一個變量,然後從中選擇5列。VBA - 使用數字選擇列?

Columns("A:E").Select 

如何使用integers來代替列引用?像下面的東西?

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

謝謝。 Gemmo

回答

19

可以使用調整像這樣:

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

在任何範圍操縱你做的,始終保持在你的腦海裏調整和抵消財產。

+0

嗨,如果我想使用列數 – 2016-09-16 10:50:38

+0

@JaydeepShil你能更多地討論你想要做什麼,得到的只是一個特定列的列範圍是多少? – L42 2016-09-20 06:50:27

0

您可以指定地址爲「R1C2」而不是「B2」。在文件 - >選項 - >形式 - >使用公式工作有一個切換R1C1參考樣式。可以設置,如下圖所示。

enter image description here

3

可以使用rangecells得到你想要的效果(但它是最好不要使用選擇,如果你沒有)

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

嘗試使用以下,其中n是你的變量,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) 
-1

通過這種方式,您可以開始選擇數據,即使在列「Z」後面也可以選擇很多列。

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

在下面的示例代碼中,我使用變量來顯示命令如何用於其他情況。

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

這應該是我認爲的評論。 – ketan 2016-03-15 04:17:40

0

無需循環或類似..試試這個..

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..* 
+0

這似乎只爲我選擇了這些列中的第一行。 – jep 2016-06-20 15:40:05

4
Columns("A:E").Select 

可以通過

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

其中1可以通過一個可變

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

更換在我看來,你是最好的處理,而列的塊可直接替換比循環列n到n + 4更有效。

另外,使用select會減慢代碼的速度。因此,不要選擇您的列,然後對選擇執行操作,而是直接執行操作。以下是將列A-E的顏色更改爲黃色的示例。

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