6
Dim i As Long
Dim rows As Long
Dim rng3 As Range
rows = rng3.rows.Count
For i = rows To 1 Step (-1)

このループがどのように機能するか知っている人はいますか? の意味が分からず困っていrows To 1 Step (-1)ます。

4

3 に答える 3

27

高い数から各反復を1 追加するには (-1)

注:数学的論理のAND+--


もしそうrows = 10なら

for i = 10 to 1 step -2各ループサイクルから10 to 1 減算 することからループバックすることを意味します。2i

ループ内に追加するDebug.Print iと、より良い手がかりが得られる場合があります。

Immediate Window注: VBEメニューバーからCTRL+Gまたはを押してオンにしますView => Immediate Window

ここに画像の説明を入力


各サイクルで 3 ずつ増加するループの例。

for i = 1 to 10 step 3
    debug.print i 
next i

ここに画像の説明を入力


使用法

ステップバック手法は、主にスプレッドシートから行を削除するときに使用されます。

実際のロジックを確認するには、次を参照してください

于 2013-10-30T15:32:13.270 に答える
5

行を削除するときは、多くの場合、最後から開始して後ろに進むのが一般的な方法です。これは、行がスキップされないようにするためです。

Dim i As Long
Dim rows As Long
Dim rng3 As Range

rows = rng3.rows.Count


For i = rows To 1 Step (-1)

    'delete row if "delete" is in column 1
    If rng3.cells(i,1).Value = "delete" Then

    rng3.Rows(i).EntireRow.Delete

    End If

next i
于 2013-10-30T15:41:25.500 に答える