• ベストアンサー

エクセル2003 マクロ シート名

エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。

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

  • ベストアンサー
回答No.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

yoshi0518
質問者

お礼

ありがとうございます。 ご指導いただいた方法で 何とかできました。 とても参考になりました。 本当に有難うございました。

その他の回答 (2)

回答No.2

こんにちは。 詳しくはいいませんが、質問を忠実に反映するのは、ちょっと難しいです。 ご質問の通りのコードは、別にできますが、以下のような簡単な方法でよろしいのではないでしょうか。 '//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

yoshi0518
質問者

お礼

ありがとうございます。 何とかできました。 大変参考になりました。 どうも有難うございました。

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

シート名取得して、R2セルへ  range("R2") = activesheet.name R2セルの内容をシート名に設定  activesheet.name=range("R2") で出来ますよ。

yoshi0518
質問者

お礼

ありがとうございます。 何とかできました。 とても参考になりました。 有難うございました。

関連するQ&A