vba_ループ処理_デクリメント

 

For idx = max_loop To 1 Step -1 でデクリメントの記述ができるようだ


------------------------------------------------------------------------



microsoft の office製品は そのファイルに対して

自動化したいタスクの記述は vbaという選択肢もありますが、

そのすべての製品で共通している文法についてお尋ねします。


そのうちの forループについてですが、

javascript だと ループ回数の指定のときのオーソドックスなケースは


for( i= 0; i< max_loop_times; i++ ) {


//繰り返し処理


}


の記述以外にも



for( i= max_loop ; i > 0 ; i-- ) {


//繰り返し処理


}

のような記述もできますが、



VBAだと、デクリメントの場合は

どのように記述するのでしょうか?


記憶があいまいで申し訳ないのですが、

VBAの場合は以下のような記述になるのでしょうか?



Dim idx As Integer

Dim max_loop As Long


max_loop = 特定の回数を代入


FOR i = 0


idx = max_loop - i 


'例えば配列の末尾の値を参照しての操作を記述


num_temporary = some_value + array01[ idx ]



NEXT i


END FOR



// For idx = max_loop To 1 Step -1



VBAにおけるデクリメントを伴う`For`ループの記述方法は、

`Step`キーワードを使います。

これにより、ループカウンタのインクリメントまたはデクリメントを制御できます。



例えば、デクリメントを行う`For`ループの一般的な書き方は次の通りです。



```vba


Dim idx As Long

Dim max_loop As Long

Dim num_temporary As Long


' ループ回数を指定

max_loop = 10


' ループカウンタをmax_loopから1までデクリメント

For idx = max_loop To 1 Step -1


    ' 繰り返し処理

    num_temporary = some_value + array01(idx)

Next idx


```


### 解説


- `For idx = max_loop To 1 Step -1` で

`idx`を`max_loop`から1まで1ずつ減少させることができます。



- `Step -1`の部分がデクリメント(減少)を意味しており、

`Step`を省略するとデフォルトで`+1`(インクリメント)になります。



- `Next idx`は`For`ループを終わらせるための終了部分です。



この書き方により、

`JavaScript`のデクリメント付きの`for`ループと

同様の動作を実現できます。




コメント