8
Set mainWB = Workbooks("Copy Paste.xlsb")
Set mainWS = mainWB.Sheets("Sheet1")
Set testWS = mainWB.Sheets("Sheet3")

mainWS.Select

ExcelVBAの最後の行でエラーが発生し続けます。

「オブジェクト'_Worksheet'のメソッド選択に失敗しました」

これを修正する理由や方法はありますか?ありがとうございました!

4

3 に答える 3

10

コメントで説明されているように、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コード。

于 2012-10-02T23:31:07.780 に答える
1

上記に同意しますが、ワークシートの可視性が現在xlSheetVeryHiddenに設定されている場合、削除機能は機能しないことに注意することも重要です。

于 2013-08-29T07:33:00.480 に答える
1

私は同じ問題を抱えていて、それを修正する方法についてのアイデアについてこの投稿を見ました。コードが失敗した行で「選択」ではなく「アクティブ化」を使用することで、問題が解決しました。したがって、「mainWS.Select」を使用する代わりに、「mainWS.Activate」を使用してみてください。

于 2019-09-10T13:59:02.860 に答える