Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


73079 / 76738 ←次へ | 前へ→

【8142】Re:For Each の順番を逆にしたい
回答  ichinose  - 03/10/1(水) 23:39 -

引用なし
パスワード
   ▼あまのじゃく さん:
こんばんは。

>実は、訳あってForEachの実行順序を逆にしたいと
>考えています。
>
>例えば、
>
>For Each cc In Range("A1:A20")
>
>Next cc
>
>の場合、A1,A2,A3...A20の順番に処理されますが、
>A20,A19,...A1の順番にする方法はないのでしょうか。
>この例では、セルなので、場合によってはアドレスを
>直接操作すれば何とかなりますが、一般的なオブジェクト
>を対象として、ForEach文の順序を逆順にする方法を
>お伺いしたいと思います。
ForEach文では順序の特定ができないので、再登録という方法です。
'======================================================
Sub test()
  Dim newrng As Collection
  Set newrng = get_Revcollet(Range("a1:a20"), Range("a1:a20").count)
  For Each aa In newrng
    MsgBox aa.Address
    Next
End Sub
'==================================================================
Function get_Revcollet(objs As Object, count As Long) As Collection
  Dim obj As Object
  idx = count
  Set get_Revcollet = New Collection
  For Each obj In objs
    If idx = count Then
     get_Revcollet.Add Item:=obj, key:=Str(idx)
     jdx = idx
    Else
     get_Revcollet.Add Item:=obj, key:=Str(idx), before:=Str(jdx)
     jdx = jdx - 1
     End If
    idx = idx - 1
    Next
End Function

コレクションの総数がわからないと使えませんが・・・。

0 hits

【8139】For Each の順番を逆にしたい あまのじゃく 03/10/1(水) 22:31 質問
【8140】Re:For Each の順番を逆にしたい INA 03/10/1(水) 23:11 回答
【8142】Re:For Each の順番を逆にしたい ichinose 03/10/1(水) 23:39 回答
【8143】Re:For Each の順番を逆にしたい Kein 03/10/1(水) 23:46 回答
【8180】Re:For Each の順番を逆にしたい りん 03/10/2(木) 19:04 回答
【8182】Re:For Each の順番を逆にしたい ichinose 03/10/2(木) 19:46 発言

73079 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free