列上的Excel VBA循环

wah*_*a31 12 excel vba excel-vba

当我们要在行中执行循环时,我们可以使用如下代码:

i = 1
Do
   Range("E" & i & ":D" & i).Select
   i = i + 1
Loop Until i > 10
Run Code Online (Sandbox Code Playgroud)

但是如果我们想在列上做一个循环呢?

我们可以使用与上述相同的方法吗?

Excel中的列是一个复杂的,如A,B,C,...,Y,Z,AA,AB,AC,......等.从"Z"到"AA"的循环之间会出现问题".

我们如何将字母列从"A"循环到"Z"然后继续进入"AA","AB"等

有什么可以帮助吗?

Lar*_*rry 25

是的,我们Select以此为例

示例代码: Columns("A").select

如何循环列:

方法1 :(您可以使用索引替换Excel地址)

For i = 1 to 100
    Columns(i).Select
next i
Run Code Online (Sandbox Code Playgroud)

方法2 :(使用地址)

For i = 1 To 100
 Columns(Columns(i).Address).Select
Next i
Run Code Online (Sandbox Code Playgroud)

编辑:剥离OP的列

columnString = Replace(Split(Columns(27).Address, ":")(0), "$", "")
Run Code Online (Sandbox Code Playgroud)

例如,你想得到第27列 - > AA,你可以这样得到它

  • @Rebel 通常永远不需要使用列字母;这就是 Excel UI 的设计方式,但在幕后,列的索引与任何其他集合一样......_使用数字_。所以除非真的有必要使用数字。 (2认同)

bon*_*igo 8

尝试的另一种方法.select将初始列设置为Range对象时也可以替换.性能明智有帮助.

Dim rng as Range

Set rng = WorkSheets(1).Range("A1") '-- you may change the sheet name according to yours.

'-- here is your loop
i = 1
Do
   '-- do something: e.g. show the address of the column that you are currently in
   Msgbox rng.offset(0,i).Address 
   i = i + 1
Loop Until i > 10
Run Code Online (Sandbox Code Playgroud)

**使用列号获取列名的两种方法**

  • 分裂()

colName = Split(Range.Offset(0,i).Address, "$")(1)
Run Code Online (Sandbox Code Playgroud)
  • 字符串操作:

Function myColName(colNum as Long) as String
    myColName = Left(Range(0, colNum).Address(False, False), _ 
    1 - (colNum > 10)) 
End Function 
Run Code Online (Sandbox Code Playgroud)

  • 另一种方法+ 1 (2认同)