[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート管理 ファイル内のシートの並べ替え』(TPP)
ファイル内のシートがランダムにあるとして、これを自分の思う通りに並べ替えたい。
例えば○○5、○○3、○○1、○○2、○○6、・・・・・・・○○53のシート名のものを1〜順番に並べ替えたい場合にどのようにしたらよいか教えていただけませんか。マクロでもできるようですが、他の方法はないかよろしくお願いします。マクロでしかできなければ、それを教えて頂けると助かります。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
おはようございます ^^ タブをポチと押したままで、左右にズリズリすれば。。。 思うように成ると思います。 マクロでしたら、色々方法は有るのでしょうけど 対応表を作るのも一案かと。。。m(_ _)m 53シートくらいなら、マクロ組んでる間に出来てしまうかも。(*^^*) m(_ _)m (隠居Z) 2021/11/06(土) 07:56
なかなか、本格的で、べんりそぉですね。^^; ユーザーフォームでメニュを作り 各、処理を設定後、ボタンを押すイベントを を使い各処理を分岐させ、分岐先毎にマクロを 起動する仕組みの様です。。。←多分。。。(*^^*) これ 本当にお作りになるのですか。 かなり面倒ですよ。ユーザーフォームは奥が深いかも 底なし。。。よくはまります。抜け出すの大変(^◇^)v でわ m(_ _)m (隠居Z) 2021/11/06(土) 08:28
追伸。。。A^^; シート名の規則性ですが ○○1〜○○53 の 最後の丸が数値なんてことはありませんか 若しくは必ず _ とか - とか ◎◎01〜○○53 とかだともっと簡単かと。。。 この辺りをさらに、詳細をご説明いただくと、フォーム等 作らずとも並び替えだけでよければ、そう、難しくはないかと 思われます。m(_ _)m (隠居Z) 2021/11/06(土) 09:46
■2
>マクロでしかできなければ、
勘違いされているようですが、隠居Zさんもコメントされているようにそのアドインもマクロですよ。
■3
>それを教えて頂けると助かります。
ざっくりいうと↓のような動きのものをつくればよいとおもいます。
【書き出しマクロ】(1)適当なシートをブックの先頭に追加する 【書き出しマクロ】(2)ブックの2番目のシートから最後のシートまでを巡回して(1)のシートに書き出す
手作業で(1)のシートを並び替える
【並び替えマクロ】(1)ブックの1番目シートのリストを上から順番に見ていき、どんどんブックの末尾にシートを移動させる 【並び替えマクロ】(2)ブックの1番目シートを削除する
丸投げであれば興味が無いので撤退しますが、頑張ってみようと思うのであれば
ブックをシートに追加する シートを移動する
という動きを【マクロ】の記録でコード化してみてください。必要な命令のいくつかが調べられます。
(もこな2) 2021/11/06(土) 09:49
Sub 書き出しマクロ() Dim i As Long
With ActiveWorkbook Worksheets.【シートを追加する命令】 Before:=.Worksheets(1) .Worksheets(1).Name = "並替リストtmp" For i = 2 To .Worksheets.Count .Worksheets(1).Cells(i - 1, "A").Value = .Worksheets(i).Name Next i End With End Sub '===================================================== Sub 並び替えマクロ() Dim i As Long
With ActiveWorkbook For i = 1 To .Worksheets(1).Cells(.Worksheets(1).Rows.Count, "A").End(xlUp).Row .Worksheets(.Worksheets(1).Cells(i, "A").Value).【シートを移動する命令】 after:=.Worksheets(.Worksheets.Count) Next i
Application.DisplayAlerts = False .Worksheets(1).Delete Application.DisplayAlerts = True End With End Sub
(もこな2) 2021/11/06(土) 10:16
Sub シートをシート名の昇順で並び替える()
Dim s1 As Long
Dim s2 As Long
For s1 = 1 To Sheets.Count
For s2 = 1 To Sheets.Count - 1
If Sheets(s2).Name > Sheets(s2 + 1).Name Then
Sheets(s2).Move After:=Sheets(s2 + 1)
End If
Next s2
Next s1
End Sub
(PP) 2021/11/06(土) 10:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.