アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルVBA 同じ名前のシートがすでにあるとエラートラップに飛ばしたいのですがうまくいきません

こんにちは
ご教示願います

下記のようなコードがあります

Sub Macro1()
Dim n As Integer

Worksheets("Sheet1").Activate

Range("A1").Value = Month(Date)

n = Range("A1").Value
MsgBox n

Sheets.Add After:=Sheets(Sheets.Count)
Range("y1").Select
ActiveCell.Value = n & "月"

ActiveSheet.Name = Range("y1").Value

End Sub

新しいシートを最後部につくり、シート名を当月(今月なら10月)とするわけですが、
"10月"というシートがすでにあるのにコードを走らせると
「実行時エラー1004:シート名を同じにはできません~」云々のエラーが出ます

そこで、下記のように書いたのですが

Sub Macro1()
Dim n As Integer

Worksheets("Sheet1").Activate

Range("A1").Value = Month(Date)

n = Range("A1").Value
MsgBox n

Sheets.Add After:=Sheets(Sheets.Count)
Range("y1").Select
ActiveCell.Value = n & "月"

On Error GoTo Err_TestProc

ActiveSheet.Name = Range("y1").Value

Err_TestProc:
MsgBox "ひと月に2回は押せません"
Worksheets(Worksheets.Count).Select
ActiveWindow.SelectedSheets.Delete
Exit Sub
End Sub

すると、10月というシートがすでにあればうまく走ります。
ですが、エラーのないときにも何故かエラートラップ処理をしてしまいます
つまり、10月という名のシートが一枚もないにもかかわらず、
"ひと月に2回は押せません"というメッセージが出て、"10月"という名のシートを消そうとするのです

どこがおかしいのでしょうか?
正しいコードをご教示願います
よろしくお願いいたします

A 回答 (1件)

Exit Sub が抜けてますよ。

追記しましょう。

ActiveSheet.Name = Range("y1").Value
Exit Sub
Err_TestProc:
    • good
    • 0
この回答へのお礼

さっそくのご回答感謝します
上手く行きました
ありがとうございました

お礼日時:2018/10/09 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています