Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
ExcelVBAの最後の行でエラーが発生し続けます。
「オブジェクト'_Worksheet'のメソッド選択に失敗しました」
これを修正する理由や方法はありますか?ありがとうございました!
Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")
mainWS.Select
ExcelVBAの最後の行でエラーが発生し続けます。
「オブジェクト'_Worksheet'のメソッド選択に失敗しました」
これを修正する理由や方法はありますか?ありがとうございました!
コメントで説明されているように、Sheets
アクティブでない(またはRange
その上のオブジェクト)VBAで選択することはできません。
たとえば、次のコード
Sheets(1).Activate
Sheets(2).Range("A1").Select
受け取っているエラーが発生します。
あなたの場合、Select
アクティブではないシートを作成しようとしているようです。mainWS
おそらく、ActiveSheet
このコードを呼び出している時点では、オブジェクトはそうではありません。これが発生しているかどうかをテストする簡単な方法は、コードの最後に次を追加することです。
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
ActiveSheet
コマンドを使用してアクティブ化されたワークシートを参照し、プロパティまたは実行したいその他の操作を取得できることに注意してください。
このエラーは、ブック内のすべてのワークシートを介してループ作業があり、非表示のシートがある場合にも発生する可能性があります。それを探してください。
最後に、特定のエラーメッセージとは関係なく、これらの変数をどこかで宣言していて、ここにコピーしなかったと思います。そうでない場合は、VBAの先頭にOption Explicit
なくてもあらゆる種類の問題が発生する可能性があるため、使用を検討します。Option Explicit
コード。
上記に同意しますが、ワークシートの可視性が現在xlSheetVeryHiddenに設定されている場合、削除機能は機能しないことに注意することも重要です。
私は同じ問題を抱えていて、それを修正する方法についてのアイデアについてこの投稿を見ました。コードが失敗した行で「選択」ではなく「アクティブ化」を使用することで、問題が解決しました。したがって、「mainWS.Select」を使用する代わりに、「mainWS.Activate」を使用してみてください。