- ベストアンサー
エクセルマクロ シート名の変更方法
エクセル2000を使用しています。 シート名「1月」~「12月」の12枚のシートと、これらとは別の1枚のシート(仮に、シート名:sheet13とします)があります。 たとえば、sheet13のA1セルに「4」(開始月)を入力するとシート名「1月」~「12月」のシート名が「4月」~「3月」に変更されるマクロを組みたいのですが、皆目見当がつきません。シート名が重複するので一旦ぜんぜん違う名前に変更しておいて、その後正しいシート名をつける。という手順だとは思うのですが、具体的なソースが良くわかりません。アドバイスよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。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 "月"なしの数字のみの名前なら重複しないので、まず、数字のみの名前に全部してしまって、 その後で"月"を付けていけばいいと思います。 なお、動作確認してないです。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
内容を元のままにして、シート名だけ変えて良いのでしょうか。 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つをヒントにして、やって見てください。 元戻りができ難い問題ですね。
お礼
アドバイスありがとうございます。 せっかくアドバイスいただきましたが、私の頭ではこれをどう活かしたらよいか良くわかりませんでした。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
回答でなくてすみません。 そのようなことが度々あるようには思えないのですが... シートの位置を移動では駄目なのですか?
お礼
ご回答ありがとうございます。 計算式の都合上シート位置を移動できないのです。
お礼
ご回答ありがとうございます。 早速試してみましたところ、うまく動作しました。思い通りの動作です。ありがとうございました。