• ベストアンサー

エクセルマクロ シート名の変更方法

エクセル2000を使用しています。 シート名「1月」~「12月」の12枚のシートと、これらとは別の1枚のシート(仮に、シート名:sheet13とします)があります。 たとえば、sheet13のA1セルに「4」(開始月)を入力するとシート名「1月」~「12月」のシート名が「4月」~「3月」に変更されるマクロを組みたいのですが、皆目見当がつきません。シート名が重複するので一旦ぜんぜん違う名前に変更しておいて、その後正しいシート名をつける。という手順だとは思うのですが、具体的なソースが良くわかりません。アドバイスよろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 こんな感じかな。 Sheet13は一番後ろにあるとします。 Sub Test()   Dim i As Long   Dim StartMonth As Long   If IsNumeric(Range("A1").Value) Then     StartMonth = CLng(Range("A1").Value)     If StartMonth < 1 Or StartMonth > 12 Then       Exit Sub     End If   Else     Exit Sub   End If   For i = 1 To 12     Worksheets(i).Name = ((i + StartMonth - 2) Mod 12) + 1   Next i   For i = 1 To 12     Worksheets(i).Name = Worksheets(i).Name & "月"   Next i End Sub "月"なしの数字のみの名前なら重複しないので、まず、数字のみの名前に全部してしまって、 その後で"月"を付けていけばいいと思います。 なお、動作確認してないです。

MSZ006
質問者

お礼

ご回答ありがとうございます。 早速試してみましたところ、うまく動作しました。思い通りの動作です。ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

内容を元のままにして、シート名だけ変えて良いのでしょうか。 Sub test01() For i = 1 To 12 Worksheets("sheet" & i).Name = Format(i, "@") & "a" j = j + 1 Next i End Sub Sub test02() j = Worksheets("sheet13").Range("a1") MsgBox j For i = 1 To 12 s = Trim(Str(i)) & "a" MsgBox s Worksheets(s).Name = Format(j, "@") j = j + 1 If j > 12 Then j = 1 Next i End Sub この2つをヒントにして、やって見てください。 元戻りができ難い問題ですね。

MSZ006
質問者

お礼

アドバイスありがとうございます。 せっかくアドバイスいただきましたが、私の頭ではこれをどう活かしたらよいか良くわかりませんでした。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

回答でなくてすみません。 そのようなことが度々あるようには思えないのですが... シートの位置を移動では駄目なのですか?

MSZ006
質問者

お礼

ご回答ありがとうございます。 計算式の都合上シート位置を移動できないのです。