18

行でループを実行する場合は、次のようなコードを使用できます。

i = 1
Do
   Range("E" & i & ":D" & i).Select
   i = i + 1
Loop Until i > 10

しかし、列でループを実行したい場合はどうなりますか?

上記と同じ方法を使用できますか?

Excelの列はA、B、C、...、Y、Z、AA、AB、AC、...などの複雑なものですが、「Z」から「AA」へのループ間で問題が発生します。 "。

アルファベットの列を「A」から「Z」にループしてから、「AA」、「AB」などに続ける方法

何か助けになるものはありますか?

4

4 に答える 4

30

Selectはい、例として使用しましょう

サンプルコード: Columns("A").select

列をループする方法:

方法 1: (インデックスを使用して Excel アドレスを置き換えることができます)

For i = 1 to 100
    Columns(i).Select
next i

方法 2: (アドレスを使用)

For i = 1 To 100
 Columns(Columns(i).Address).Select
Next i

編集:OPの列を削除します

columnString = Replace(Split(Columns(27).Address, ":")(0), "$", "")

例: 27 番目の列を取得したい --> AA、この方法で取得できます

于 2012-12-21T06:31:33.010 に答える
10

試してみる別の方法。またselect、最初の列をRa​​ngeオブジェクトに設定するときに置き換えることもできます。パフォーマンスに関しては役立ちます。

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

**列番号を使用して列名を取得する2つの方法**

  • スプリット()

コード

colName = Split(Range.Offset(0,i).Address, "$")(1)
  • 文字列操作:

コード

Function myColName(colNum as Long) as String
    myColName = Left(Range(0, colNum).Address(False, False), _ 
    1 - (colNum > 10)) 
End Function 
于 2012-12-21T08:40:49.887 に答える
3

同じ種類のループを使い続けたい場合は、これでうまくいきます。

Option Explicit

Sub selectColumns()

Dim topSelection As Integer
Dim endSelection As Integer
topSelection = 2
endSelection = 10

Dim columnSelected As Integer
columnSelected = 1
Do
   With Excel.ThisWorkbook.ActiveSheet
        .Range(.Cells(columnSelected, columnSelected), .Cells(endSelection, columnSelected)).Select
   End With
   columnSelected = columnSelected + 1
Loop Until columnSelected > 10

End Sub

編集

実際には、スプレッドシートの領域内のすべてのセルをループするだけの場合は、次のようなものを使用します。

Sub loopThroughCells()

'=============
'this is the starting point
Dim rwMin As Integer
Dim colMin As Integer
rwMin = 2
colMin = 2
'=============

'=============
'this is the ending point
Dim rwMax As Integer
Dim colMax As Integer
rwMax = 10
colMax = 5
'=============

'=============
'iterator
Dim rwIndex As Integer
Dim colIndex As Integer
'=============

For rwIndex = rwMin To rwMax
        For colIndex = colMin To colMax
            Cells(rwIndex, colIndex).Select
        Next colIndex
Next rwIndex

End Sub
于 2012-12-21T08:04:57.640 に答える