1番目のシートが勝手に消される

ファイルを選ぼうとした時にキャンセルしたら、追加したシートを消すプログラムを書いています。
1番目はTop、2番目はCSV Templateというシート名にしており、Topにはこのコードを実行するボタンがあります。

Sheets(“CSV Template”).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = “Dumped CSV”
ここで、Dumped CSVという3番目のシートが生成されます。

Dim excelfile
excelfile = Application.GetOpenFilename

If excelfile = False Then

MsgBox ("Cancelled")
ActiveSheet.Delete

Exit Sub

End If

1回目の実行では問題ないのですが、2回目にキャンセルをしようとすると、TopがDumped CSVというシート名になってしまい、ボタンのあるTopシートが消されてしまいます。
Excelでは問題なかったのが、LibreOfficeではこのような現象が起きてしまいます。

2回目以降の実行でもTopシートの名前を勝手に変えられない、消されないようにするための修正方法を教えて頂けませんでしょうか。

よろしくお願いします。

Delete の行にブレークポイントを設定して
本当にリネームされたかを確認はされましたか?
コードからは想像しにくいと思いますけれど。

確認しました。

1回目の実行では、

Sheets(“CSV Template”).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = “Dumped CSV”

この部分で、問題なく新しくコピーされたシートにDumped CSVという名前が付きました。

しかし、2回目の実行だと、新しいシートはCSV Templateの後に問題なく作られるのですが、その直後のリネームが、なぜか1番目のシート、Topに行われてしまいます。

貴方の検証に私は疑義を持っています。
何故かというと、私がお願いしたのはDeleteの行への
ブレークポイントです。何故関係のない前の行を
検証しているのですか?
Delteの時点のシート名を確認するのが肝要なんです。
1回目は恐らくDumped CSVでしょう。
二回目もブレークポイントで止めればシート名の
確認が可能なはず、私はそこにDumped CSVが
存在するとは思えません。

結局、VBAではなくLibreOffice独自の関数を使うことで解決できました。

シートのコピー
ThisComponent.Sheets.copyByName(“CSV Template”, “Dumped CSV”,3)

シートの消去
ThisComponent.Sheets.removeByName(“Dumped CSV”)

Topシートをアクティブにする
ThisComponent.CurrentController.ActiveSheet = ThisComponent.Sheets.getByName(“Top”)

ありがとうございました。

検証はされないのですね。

IF ActiveSheet.Name = “Dumped CSV” then ActiveSheet.Delete

これで問題は解決すると思ったのですけれど。