- ベストアンサー
VBAでシートコピー後、シート名が重複している時の処理
今日からVBAを勉強し始めました初心者です。会社である作業をしており、VBAでの作業がうまくいかなくて困っております。 「実績」というシートを11/5に作ったとします。 このシートを、11/9にマクロを実行した時に、 ・11/5のシートをコピーし複製を作る(この時点ではシート名は「実績(2)」) ・この時、シート名は「11-05」となるように設定済み (実績シートの「G1」セルから、日付を取得しファイル名とする) としています。 この時、まれに同じ日に間違ってマクロを動かす為、同じシート名となりエラーが出てしまいます。 利用者が不慣れなため、エラーの対処方法を教えることでは対処が難しい状態で、できればマクロで対応しようと思っています。 以下、シート名が重複しない場合のみ利用可能なデータです。 '前回作成した「実績」のコピー&リネーム Dim mySheet As Worksheet Set mySheet = ActiveWorkbook.Worksheets("実績") mySheet.Copy after:=Worksheets("実績") '実績sheetの後ろにコピー ActiveSheet.Name = Format(Range("G1").Value, "m-dd") ' シート名を変更する 他の質問を検索しましたが、コピーしたファイルをリネームし、 そのリネーム結果が重複している場合の記述方法がよくかわりませんでした。 重複している場合は、できればメッセージボックスで「yesno」の選択で上書きの選択ができればと思っています。 (VBAでは一度削除してから新規に作るようですが、上の重複のからみで、よくわからなくなっています) よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
お礼
早いアドバイスありがとうございました。 無事、完成させることができました。 ありがとうございました。 一点、 >ActiveSheet.Name = Format(Range("G1").Value, "m-dd") >意味は分かるのですが、こういうコードは、確かにこれで通るのですが、かなり乱暴なやり方です。Range("G1").Value ではなくて、「実績」の方のG1 の値のはずです。 というのが、乱暴な理由がよくわかりませんでした。 なにか決まり事や、常識のようなものがあるのでしょうか? すいません。