• ベストアンサー

教えてください、VBA初心者で困っています。

コピーボタンを押しシートをコピーする際、名前を変更したいのですが初心者で出来ず困っています。  シートのコピーは 「Worksheets("A").Copy After:=Worksheets("B")」 で出来ましたがこれだシートBの後にコピーされたシートA名は「A(2)」になります。この名前をシートAの或るセルに記入されている年月日(2006-01)を参照し「2006-01」にしたいのです。参考書を見たり検索サイトで探しましたが旨くいきません。宜しくご教授お願いします。

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

  • ベストアンサー
noname#123709
noname#123709
回答No.4

シートがAとBしかないのなら下記で可能ですが・・・。 Sub test() Sheets("A").Copy after:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = Format(Sheets("A").Range("A1").Value, "yyyy-mm") End Sub そうでないのであれば、 Sub test() Sheets("A").Copy after:=Sheets("B") Sheets("A (2)").Name = Format(Sheets("A").Range("A1").Value, "yyyy-mm") End Sub ですかね? シート名として使うセルが日付データの場合ですので、単純に文字列であれ ば修正して下さい。

yazaemon
質問者

お礼

・ばっちり思い通りの動きが出来ました。ありがとうございました。これでセルの文字列を参照しシート名の変更が自由にできるようになりました。本当にありがとうございました。

その他の回答 (4)

  • nov-d
  • ベストアンサー率36% (51/140)
回答No.5

こんな感じでいかがでしょうか? Sub Copy_Sheet() Dim Sheet_Name As String Sheet_Name = Worksheets(1).Range("A1").Value Worksheets(1).Copy After:=Worksheets(2) On Error GoTo ERR1 ActiveSheet.Name = Sheet_Name Exit Sub ERR1: MsgBox ("シート名が重複しています。別のシート名を指定してください。") Exit Sub End Sub

yazaemon
質問者

お礼

・シートコピー後のエラー処理まで有り参考になりました。ありがとうございました。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

Worksheets("A").Copy After:=Worksheets("B") ActiveSheet.Name = Format(Range("A1"), "yyyy-mm") 若しくは、ActiveSheet.Name = Range("A1").Text

yazaemon
質問者

お礼

・早速の回答ありがとうございました。参考にさせていただきます。

回答No.2

下記でいかがでしょうか? '↓コピーのプログラム (1)Sheets("Sheet1").Copy After:=Sheets(3) '↓コピーしたシートを選択 (2)Sheets("Sheet1 (2)").Select '↓選択した(コピーした)シート名の変更 (3)Sheets("Sheet1 (2)").Name = "COPY" 実際のシート名変更のプログラムは(3)です。 なので、質問者様の場合、コピー後のシート名が"B"ですので 文字列の場所を変更してもらえればいいかと思います。

yazaemon
質問者

お礼

・回答ありがとうございました。参考になりました。

noname#22364
noname#22364
回答No.1

こんばんは 回答ではないのですが参考URLが便利です。 ※sheetname~というのを使った記憶があります

参考URL:
http://www.asahi-net.or.jp/~ef2o-inue/top01.html
yazaemon
質問者

お礼

・このURL参考になりました。ありがとうございました。

関連するQ&A

専門家に質問してみよう