- ベストアンサー
エクセル2003 マクロ シート名
エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Q2は自分でバンバンしてもらうとして、 Q1はイロイロ手がある。 どういう手順でやりたいのかワカラン、、、 既にシートがあって一度に全部? 一枚ずつそのシートだけ?? それと「シート名」には使えない文字がイロイロあるので注意! そのセルで日付変換を使うと、例えば「1」入力で「1/1」になる。見かけは「1月1日」でもシート名にはできないことになるので、文字列で入力すべき。 Sub ChangeSheetName() Const xOperation = "R2" Const xMode = 0 '0:全シート、1:アクティブシートだけ Dim kk As Long Dim xSheet As Worksheet If (xMode = 0) Then For Each xSheet In ThisWorkbook.Worksheets If xSheet.Range(xOperation) <> Empty Then xSheet.Name = xSheet.Range(xOperation).Value End If Next Else Set xSheet = ActiveSheet If xSheet.Range(xOperation) <> Empty Then ActiveSheet.Name = xSheet.Range(xOperation).Value End If End If End Sub
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 詳しくはいいませんが、質問を忠実に反映するのは、ちょっと難しいです。 ご質問の通りのコードは、別にできますが、以下のような簡単な方法でよろしいのではないでしょうか。 '//R2 に書かれたシート名を反映させる。 Sub TestMacro1() Dim w As Variant Dim myDate As String On Error Resume Next For Each w In Worksheets myDate = StrConv(w.Range("R2").Text, vbNarrow) If IsDate(myDate) Then w.Name = myDate End If Next w End Sub Sub TestMacro2() Dim w As Variant For Each w In Worksheets If IsDate(w.Name) Then w.Range("R2").Value = w.Name End If Next w End Sub
お礼
ありがとうございます。 何とかできました。 大変参考になりました。 どうも有難うございました。
- tsubuyuki
- ベストアンサー率45% (699/1545)
シート名取得して、R2セルへ range("R2") = activesheet.name R2セルの内容をシート名に設定 activesheet.name=range("R2") で出来ますよ。
お礼
ありがとうございます。 何とかできました。 とても参考になりました。 有難うございました。
お礼
ありがとうございます。 ご指導いただいた方法で 何とかできました。 とても参考になりました。 本当に有難うございました。