コメントで説明したように、VBA内のSheets
がアクティブでない(またはRange
のオブジェクトが)選択できません。
たとえば、次のコード
Sheets(1).Activate
Sheets(2).Range("A1").Select
は、あなたが受けているエラーが発生します。あなたのケースでは
は、あなたがSelect
アクティブでないシートにしようとしているようだ - あなたのmainWS
オブジェクトは、おそらくあなたは、このコードを呼び出している時点でActiveSheet
ではありません。あなたがプロパティまたは任意の他の操作を取得するためのいずれかのコマンドActiveSheet
で活性化ワークシートを参照することができます
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
注:あなたのコードの末尾に次の行を追加した場合、これが起こっているかどうかをテストするための簡単な方法ですあなたはやっていることに興味があります。
このエラーは、ブック内のすべてのワークシートでループ処理が行われていて、隠れシートがある場合にも発生する可能性があります。それを見てください。
最終、そしてあなたの特定のエラーメッセージとは無関係の、私はあなたがどこかと単純にその変数を宣言していると仮定すると、それらをここにコピーされませんでした - あなたは、多くの場合、問題のすべての種類に実行することができますように私はOption Explicit
を使用して検討するとされていない場合あなたのVBAコードの先頭にOption Explicit
がなくても。
に設定されている場合、削除機能が動作しないことに注意することも重要であるが、実際にシート1 /シート3という名前のシートはありますか?ワークブックの名前は同じですか? – enderland
'mainWB'はアクティブですか? –
したがって、 '.Select'は避けなければなりません:)このリンクを参照してくださいhttp://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –