任意でシート名を並べ替える

先日の話。自分が扱ってるエクセルブックで、やたらにシート数が多いものがある。
自分なりの使い勝手を考えて、任意で並べ替えようと思い、簡単なマクロを作ってみた。

Sub シート名を表示()
 Dim zWS As Worksheet
 Dim myWS As Worksheet
 Set zWS = Sheets.Add(before:=Sheets(1))
 zWS.Name = "暫定"
   For Each myWS In Worksheets
     If myWS.Name <> "暫定" Then
       Sheets("暫定").Range("a65536").End(xlUp).Offset(1) = myWS.Name
     End If
   Next
    Rows(1).Delete
End Sub

とりあえず、上記のマクロを実行すれば下図のように現在のシート名が暫定シートに表示される。
その後、暫定シートのA列に表示されたシート名を任意で並べる。
e0080122_7284153.gif

並べ替えが完了したら、以下のマクロを実行してみた。

Sub シートの並べ替え()
 Dim myWS As Worksheet
 Dim zWS As Worksheet
 Dim i As Integer
  Set zWS = Sheets("暫定")
    For i = 1 To zWS.Range("A1").CurrentRegion.Rows.Count
      Sheets(zWS.Cells(i, 1).Value).Move before:=Sheets(i)
    Next
   Application.DisplayAlerts = False
     zWS.Delete
   Application.DisplayAlerts = True
End Sub
e0080122_736351.gif

任意にシート名が並べ替えられた。
ま、構文的にどうかは別として目的のものが出来たのでよしとする。
[PR]
by slayer0210 | 2006-03-16 07:38 | マクロ


<< テキストボックスのサイズ調整 IndexとMatchを使用した表 >>