月日のシートタブを使って,順番に並び替える方法?
こんにちは,よろしくお願いします。
VBAに関する質問です。
ワークシートのタブに「12月 1日」とか「 2月28日」とか「 6月14日」などの名前が付けられています。これらのワークシートを,4月1日から翌年の3月31日までの順に並べ替えるプログラムを作りたいのですが,どのようにしたらよいか教えてください。
全てのワークシートの名前を取得し,”月”が何文字目に入っているかを検索し,Left関数で月数を切取り,それによって年度を加え,これをCDateで日付関数に変換したりなどして見ました。
For Each Wsht In Worksheets
If InStr(Wsht.Name, "月") = 3 Then
Tuki = CInt(Trim(Left(Wsht.Name, 2)))
If Tuki > 0 And Tuki < 4 Then
Hiduke = "2012年" & Wsht.Name
ElseIf Tuki > 3 And Tuki < 10 Then
Hiduke = "2011年" & Wsht.Name
End If
ElseIf InStr(Wsht.Name, "月") = 4 Then
Hiduke = "2011年" & Wsht.Name
End If
Next
日付関数への変換は抜いていますが,この後,Date型の配列と文字列型の配列を用意し,
Date型の配列にはCDateで変換した値を代入し,文字列型の方には,元々のシートタブの値を代入し,Date型の方で,最小値ををfor~nextで探し出すなどして,文字列型の方を添え字の順になるように並び替えて・・・・もう手一杯です。
さらにこれをWorksheets(" 6月14日").move before:=**** などというメソッドを使って並び替えなくてはいけないとなると,もう私の力ではオーバーフローです。
すみません。どなたかお助けください。
補足
お礼が遅くなってすみません。 仕事でばたばたしていましたので。 >どのブックのどのシートをどういう名前にするかの規則性があるかどうかによって< 一つのブックごとに完結します。ブック相互の関連はありません。 ブックの名前は記録1記録2…です。 シートは数ヶ月分がセットになっています。一週間に二回(月曜、木曜)のように同じ曜日で続いていきます。ですから週の中で規則性があるということになると思います。 >VBAの組み方が変わってきます。< For Each文を探して例文を見つけたのですが、どのように応用したらいいのかわからなくて行き詰まっています。(例えばシートタブを指定するにはどう書いたらいいのかなど) すみません今VBAを勉強中ですが中々進まなくて。 おんぶにだっこみたいになってしまいそうで申し訳ありません。