- ベストアンサー
右からループするにはどうすればいいですか?
Sub test() For Each s In Worksheets Debug.Print s.Name Next End Sub これでシート名を取得する際は左から取得されますが 右からループするにはどうすればいいですか?
- みんなの回答 (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 ' ' ///
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
どうぞ~ For i = Worksheets.Count To 1 Step -1 Debug.Print Worksheets(i).Name Next
お礼
ありがとうございました。
お礼
ありがとうございました。