• ベストアンサー

右からループするにはどうすればいいですか?

Sub test() For Each s In Worksheets Debug.Print s.Name Next End Sub これでシート名を取得する際は左から取得されますが 右からループするにはどうすればいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 > 右からループするにはどうすればいいですか? 基本的には、 For Each...Next ステートメントで逆順のループをさせることは出来ませんので、 既出の回答のようにFor...Next ステートメントで インデックスを逆順でループすることになります。 なぜ「右からループ」させたいのか、という説明があれば、 そう少し他の話が出来るのかも知れませんが、 私個人の経験から 何度も繰り返し頻繁に「右からループ」する必要があるという理由で、 ブックを開いた時に、逆順のコレクションを用意するようにして、 総当たりで「右からループ」を簡単に出来るようにした実践コード がありましたので、参考としてあげてみます。 「右からループ」の理由、実務からの要求ではなくて、 基本技術の学習が目的、ということでしたらば、 インデックスを逆順でループするのが普通のやり方です。 何か不足があるようでしたら、補足をお願いします。 ' ' /// 〓 以下、ひとつの標準モジュールに併記する場合 〓 w9100377 Option Explicit Private colWsk As New Collection ' ' 全ワークシートを逆順でCollectionオブジェクトに格納 Private Sub Auto_IOpen() Dim i As Long   With Worksheets     For i = .Count To 1 Step -1       colWsk.Add .Item(i), CStr(i)     Next i   End With End Sub ' ' 逆順の全ワークシートが格納されているCollectionオブジェクトを総当たりループ Sub main() ' 「右からループ」 Dim wks As Worksheet   If colWsk.Count = 0 Then Call Auto_IOpen   For Each wks In colWsk     Debug.Print wks.Name   Next End Sub ' ' ///

FHWLTDIHX
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

どうぞ~ For i = Worksheets.Count To 1 Step -1 Debug.Print Worksheets(i).Name Next

FHWLTDIHX
質問者

お礼

ありがとうございました。

関連するQ&A