Home » エクセルマクロ・Excel VBAの使い方 » For~Nextループを逆順に後ろから前に回す

対象:Excel2007, Excel2010, Excel2013

「excel vba for 逆順」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

Excel VBAの、For~Nextループを、逆から(後ろから前に)回す方法を探している方による検索でしょうか。

[スポンサードリンク]

For~Nextループを前から回すサンプルマクロ

まずは、前から回すループを確認しておきましょう。

複数のシートが存在しているブックをアクティブにしておいて、以下のようなマクロを実行すると、シート名が左から・前から順にメッセージボックスに表示されます。

Sub ForNextループを前から回す()
 Dim i As Long
 For i = 1 To Sheets.Count
  MsgBox Sheets(i).Name
 Next
End Sub

仮に、下図のようにシートが並んでいれば、

Excel VBAでFor~Nextループを逆順に後ろから前に回す

「Sheet1」「Sheet2」「Sheet3」の順でメッセージボックスが表示されます。

For~Nextループを後ろから逆順に回すサンプルマクロ

「excel vba for 逆順」
というキーワードで検索した方は、これを、後ろから・右から
「Sheet3」「Sheet2」「Sheet1」
の順でシート名を表示する方法を探していらしたのでしょう。

Sub ForNextループを後ろから回す()
 Dim i As Long
 For i = Sheets.Count To 1 Step -1
  MsgBox Sheets(i).Name
 Next
End Sub

上記のようなマクロにすれば、後ろからループを回すことができます。

ポイントは、
  For i = Sheets.Count To 1 Step -1
です。

For~Next文の「Step 1」は通常省略される

先にご紹介した、前からループを回す場合は、
  For i = 1 To Sheets.Count
となっていましたが、そもそもこれは、
  For i = 1 To Sheets.Count Step 1
を省略した書き方です。

カウンター変数iに、「1」から「Sheets.Count」(シートの枚数)まで、1ずつ増やした値(Step 1)を順番に代入しながらループを回しなさいというのが、
 For i = 1 To Sheets.Count Step 1
の部分の意味です。

For~Next文は、カウンター変数を1ずつ増やしながらループを回すことが多いので、「Step 1」を省略することができ、一般的に省略することが多いのです。

For~Next文では「Step -1」でデクリメント

このいくつ増やすかを指定する「Step」の後ろに「-1」(マイナス1)を指定すれば、1ずつ減らしながら代入が行われます。

減らしていくわけですから「To」の前後に指定する、開始の値と終了の値も当然入れ替える必要があり、Toの前にループ開始時の大きい値、Toの後ろにループを終了する小さいほうの値を指定します。それが、
  For i = Sheets.Count To 1 Step -1
です。

このサイトでは以下のような「Step -1」を使ったExcelマクロをご紹介しています。

最終更新日時:2020-09-12 07:04

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » For~Nextループを逆順に後ろから前に回す

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.