和風スパゲティのレシピ

日本語でコーディングするExcelVBA

データを逆順でループする - For Step -1

データを逆順でループする方法を解説します。

For Nextステートメントの引数Stepに-1を指定します。

基本構文

For カウンタ変数 = 最終値 To 初期値 Step -1

    ' ここにループしたい処理

Next

サンプルコード

Dim ws処理シート As Worksheet
Set ws処理シート = ThisWorkbook.Worksheets("○○")

Dim 最終行 As Long
最終行 = ws処理シート.Cells(ws処理シート.Rows.Count, 1).End(xlUp).Row

' 最終行から第1行へ逆順にループ
Dim R As Long
For R = 最終行 To 2 Step -1
    
    ' 処理例:C列=A列×B列
    ws処理シート.Cells(R, 3) = ws処理シート.Cells(R, 1) * ws処理シート.Cells(R, 2)
    
Next

解説

データを逆順でループしたい場合は、
For Nextステートメントの引数Stepに-1を指定します。


StepはNext到達時のカウンタ変数増分を変更する仕組みですが、
ここには負の値も指定でき、その際は変数が順に減るループになります。

よってStepを-1にすることで1行ずつ逆順にループをかけることが可能です。


注意点として、最終値と初期値を逆にするのを忘れないようにしましょう。

負の値を指定した際は「Toで指定した値を下回ったら停止」になるため、
一度もFor文内に入ることなくForステートメントを通過します。

※ 無限ループでもない点に留意してください。