わちょんさんのYouTubeを見て、Excelの神髄さんの回答を見て、書いてみたけどエラーばっかり

 

Sub VBA100ノック15()
    Dim i As Long
    Dim ws As Worksheet
    Application.Worksheets.Add Before:=Worksheets(1)
    Worksheets(1).Name = "シート名一覧"
    Set ws = Worksheets("シート名一覧")   
    For i = 1 To Sheets.Count
        Cells(i, 1).Value = Sheets(i).Name
    Next i
    Columns(1).AutoFit
    Columns(1).NumberFormat = "@"   
    '並び替え
    Range("A:A").Sort key1:=Range("A1"), order1:=xlAscending, Header:=xlYes
    For i = 2 To Sheets.Count - 1
        Worksheets(ws.Cells(i, 1).Value).Move After:=Worksheets(i - 1)(★)
    Next i   
    Application.DisplayAlerts = False
    ws.Delete
End Sub

 

★でエラーになって進まない…。神髄さんの解答3とほぼ同じなのに、と思って★ばっかり見てたけど原因は違った。

「Columns(1).NumberFormat = "@"」これの場所だった。

 

シート名取得してから、文字列に変更("@")してたけど、こうすると04月とかが4月になっちゃって、「そんなシート名ありません」と判定されてしまう。

シート名取得する前に、Numberformatをいれることで、エラーなく実行できました(^^)

わちょんさんのYouTubeみたから、間違いに気づけたなと思う。

いつもわかりやすい動画をありがとうございます。