Office 2016で動作しているかどうかをチェックする必要がある、先験的なコードがあります。Office 2013では魅力的ですが、新しいバージョン私はエラーが発生します。VBA削除シートは実行時エラー9をスローしますが、シートはまだ削除しています
ワークブックAでは、新しいワークブックBにコピーしたいワークシートWS-Aがあります。その前に、WS-Aのコピーを作成しています(WA- A-Copy)を変更し、いくつかの変更を加えます。その後、WS-A-Copyを新しいワークブックB(WS-Bの作成)にコピーします。最後に、元のワークブックAからWS-A-Copyを削除したいが、このシートを削除しようとすると実行時エラー9(下付き文字が範囲外)になる。 ( - 「?activeworkbook.Nameを」エラーが発生する直前に、イミディエイトウィンドウにタイプデバッグモード)私は右のワークブックAを使用している場合
WorkbookA = ActiveWorkbook.Name
WS-A-Copy = ActiveSheet.Name
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
'go to WS-A-Copy in workbook B and add a copy of the values and formats
WS-B = ActiveSheet.Name
Sheets(WS-B).Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
Range("A1").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
Range("A1").Select
'Go back to Workbook A and delete WS-A-Copy
Windows(WorkbookA).Activate
If SheetExists(WS-A-Copy) Then
Sheets(WS-A-Copy).Delete <-- Runtime Error 9
End If
私はすでにチェックしています。 シートが現在のワークブックに存在するかどうかも確認します。 したがって、どちらも真です。
しかし、なぜこのランタイムエラーが発生しますか?そしてなぜこのシートWS-A-CopyがWorkbook Aで削除されるのでしょうか?そして、なぜこれはOffice 2016の問題ですが、Office 2013は問題ありませんか?
誰でも私にヒントを教えてもらえますか?前もって感謝します!
このような名前の変数はどうやって取得できましたか?私のExcel 2013のコンパイラはそれらを渡しません – user3598756
あなた自身のために、ブックの変数を完全に修飾し、選択を使用しないでください。これは、エラー – RGA
@ user3598756に寄与している可能性があります。コードを読みやすくするために変数名を変更しました。 –