2012-10-02 7 views
5
Set mainWB = Workbooks("Copy Paste.xlsb") 
Set mainWS = mainWB.Sheets("Sheet1") 
Set testWS = mainWB.Sheets("Sheet3") 

mainWS.Select 

Ich erhalte einen Fehler in der letzten Zeile in Excel VBA:Methode Auswahl des Objekts '_Worksheet' ist fehlgeschlagen - warum?

"Methode Select des Objekts '_Worksheet' ist fehlgeschlagen"

Jede Idee, warum oder wie man dieses Problem lösen? Vielen Dank!

+0

Sind Ihre Blätter tatsächlich sheet1/Sheet3 benannt? Ist die Arbeitsmappe gleich benannt? – enderland

+1

Ist 'mainWB' aktiv? –

+2

Und daher '.Select' sollte diesen Link vermieden werden :) Siehe http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –

Antwort

6

Wie in den Kommentaren besprochen, kann Sheets in VBA nicht ausgewählt werden, die nicht aktiv sind (oder Range Objekte auf ihnen).

Zum Beispiel der Code folgende

Sheets(1).Activate 
Sheets(2).Range("A1").Select 

wird den Fehler verursachen Sie empfangen.

In Ihrem Fall scheint es Ihnen Select ein Blatt, das nicht aktiv versuchen, ist - Ihr mainWS Objekt ist vermutlich nicht der ActiveSheet an dem Punkt Sie diesen Code aufrufen. Eine einfache Möglichkeit zu testen, ob dies geschieht, ist, wenn Sie das folgende an das Ende des Codes hinzufügen:

if (ActiveSheet.Name <> mainWS.Name) then 
    msgbox ("Going to crash after clicking ok!") 
end if 
mainWS.Select 

Beachten Sie, dass Sie auf das aktivierte Arbeitsblatt mit dem Befehl beziehen ActiveSheet entweder Eigenschaften zu erhalten oder was auch immer andere Operationen Du bist daran interessiert.

Dieser Fehler kann auch auftreten, wenn Sie eine Schleife durch alle Arbeitsblätter in der Arbeitsmappe arbeiten und es ausgeblendete Blätter gibt. Achten Sie darauf.


Last, und in keinem Zusammenhang mit Ihrer spezifischen Fehlermeldung, gehe ich davon aus Sie diese Variablen irgendwo deklarieren und einfach haben sie hier nicht kopieren - wenn ich nicht in Betracht ziehen würden mit Option Explicit, wie Sie oft in alle möglichen Probleme laufen ohne Option Explicit an der Spitze Ihres VBA-Codes.

+0

Ausgezeichnete Antwort. Herzlichen Glückwunsch zum Wissen und zur Präsentation. – NoChance

+0

@NoChance danke für die freundlichen Worte. – enderland

1

Während ich mit der oben einverstanden ist, ist es auch wichtig zu beachten, dass die Löschfunktion funktioniert nicht, wenn die Sicht des Arbeitsblatts derzeit xlSheetVeryHidden gesetzt