- ベストアンサー
VBAで同じシート名のコピー時は処理中止したいのですが・・・
・先日VBAでシートのコピー時にシート名の変更の仕方をしえて頂き完成したのですが、ある問題が発生し困っています。以下が状況です。 シート1、シート2が有りシート1のコピーボタンを押すとシート1の例えば「A1」セル(2006-01)を参照しシート2の後に「2006-1」のシートを作成迄は教えて頂き出来ました。しかしシート1の「A1」セル(2006-01)を更新するのを忘れてコピーボタンを押すとエラーになってしまいます。同じシート名がある時は「重複です。」とかメッセージを出して中止したいのですが初心者で旨くいきません。nov-dさんの回答を元に色々調べましたが旨く動きません。ご教授宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
お礼
・hana-hana3有難うございました。 補足を記入後冷静に見てみると ActiveSheet.Name = Sheet_Nameがsheet1がActivate なってから実行なので当たり前でした。シートコピー後すぐActiveSheet.Name = Sheet_Name実行で見事解決いたしました。本当に有難うございました。
補足
・回答ありがとうございます。早速試してみて旨く動くのでシート名1を「稼動」、シート名2を「祝日」と変更し実行すると「稼動」シートのA1を参照し「稼動」シート名が「XXX」と変更され、「祝日」シートの後にコピーされたシート名は「稼動(2)」となってしまいます。以下がプログラムです。どこが違うか分かりません。ご教授宜しくお願いいたします。 Private Sub CommandButton1_Click() Dim Sheet_Name As String Sheet_Name = Worksheets("稼動").Range("A1").Value 'シート名チェック Dim ws As Variant Dim flg As Boolean For Each ws In ThisWorkbook.Worksheets If Sheet_Name = ws.Name Then flg = True Exit For End If Next If flg = False Then Worksheets("稼動").Copy After:=Worksheets("祝日") Sheets("祝日").Activate Range("B36:B67").Select Selection.ClearContents Sheets("稼動").Activate Range("I6:J6").Select Selection.ClearContents Range("C18:K48").Select Selection.ClearContents Range("Q18:AS48").Select Selection.ClearContents Range("D15").Select 'Unload UserForm2 ActiveSheet.Name = Sheet_Name Else MsgBox ("シート名が重複しています。別のシート名を指定してください。") 'MsgBox " D:15のスピンボタンをクリックし、月度を変更して下さい。次にI:6とJ:6に月度の開始日と終了日を記入して下さい!!" End If End Sub