プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
VBA初心者です。
マクロの記録を少し変形して色々便利に使っているのですが、下記の2行のコードは単独では動くのに結合するとエラーとなります。
アクティブシートのD5セルをシート名にして、そのシートのコピーを末尾にコピーしたいのですが、何か抜けているようです。
お助け下さい。

Sub Sheet名()
ActiveSheet.Name = Range("D5").Value
ActiveSheet.Copy After:=Sheets(2)
End Sub

A 回答 (2件)

こんにちは



それぞれ1行のコードを連結したってことでしょうか?
特段おかしなところは見当たりません・けれど・・
どの行で、どのようなエラーになっているのでしょうか?

推測するところ、D5セルにシート名で使用できない文字(\:/など)がはいっているとか。
あるいは、Sheets(2)が存在しないとか。(シートが一つしかない状態)
    • good
    • 1
この回答へのお礼

早々のご回答ありがとうございます。

その通りで1つづだと正常に動きます。

お礼日時:2020/09/30 21:20

シートをコピーすると新しくコピーされたシートがアクティブになるので、


以下のように順序を入れ替えしたらどうでしょう。

Sub Sheet名()
ActiveSheet.Copy After := Worksheets(Worksheets.Count)
ActiveSheet.Name = Range("D5").Value
END SUB
    • good
    • 1
この回答へのお礼

早々のご回答ありがとうございます。

なるほど、思うように動きました。
最後に最初のシートに移動して終わるようにして使えそうです。

お礼日時:2020/09/30 21:22

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