• ベストアンサー

シート名変更のマクロ

QNo.4400605『エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが』という質問をしてそれについては解決しましたが、作成されたシートの名前を1~40のような数字に変更するマクロが分かりません。作成するシートの枚数は決まってなく、25シートであったり、40シートだったりします。A1:A40に1~40と変更後のシート名を入力して、それをシート名に反映させるマクロは作れたのですが、毎回シート枚数が変わるので「インデックスが有効範囲にありません」と出てしまいます。型としては、元シートがあり、そこでシート数を指定しシートを挿入し、そのできたシートに数字の名前をつけたいと考えています。長々なりましたが教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 前の掲示は、解決しているなら、閉じたほうがよいのでは? それと、同様の質問を出す前に、前に質問の解答してくださった人にコメントを付けるようにしたらどうですか?そういう質問の仕方をすると、常連の方からレスが付かなくなります。 '標準モジュールがベスト Sub Test1() '同名があるエラーや、シート1のA列に何も書かなかった場合のエラーは考えておりません。   Dim i As Integer   Dim j As Integer   Dim n As Integer   Dim r As Range   With Worksheets("Sheet1")     Set r = .Range("A1", .Range("A65536").End(xlUp))   End With   j = r.Cells.Count   i = Worksheets.Count      Application.ScreenUpdating = False   Worksheets.Add After:=Worksheets(i), Count:=j   For n = 1 To j     Worksheets(i + n).Name = r.Cells(n, 1).Value   Next n   Application.ScreenUpdating = True    End Sub

noa8998
質問者

お礼

失礼しました。今後気をつけます。 この件については解決しました。ありがとうございました。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

前質問の#2さんの回答をいじればいいんじゃないかと。 Sub Macro1()  n = Sheets(1).Cells(1, 1)  Do Until Sheets.Count = n   Sheets.Add After:=Sheets(Sheets.Count)   Sheets(Sheets.Count).Name = "Sheet" & Sheets.Count  Loop End Sub 5行目でシート名を指定していますので、こいつの右辺を適当に 指定してやればいいんです。 Sub Macro1()  n = Sheets(1).Cells(1, 1)  i = 1  Do Until Sheets.Count = n   Sheets.Add After:=Sheets(Sheets.Count)   i = i + 1   Sheets(Sheets.Count).Name = Cells(1, i)  Loop End Sub こんな感じで行けると思います。動作チェックはしてないですけど。

noa8998
質問者

お礼

いじりかたが分かりませんでした。 解決しました。ありがとうございます。

関連するQ&A