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.
Sind Ihre Blätter tatsächlich sheet1/Sheet3 benannt? Ist die Arbeitsmappe gleich benannt? – enderland
Ist 'mainWB' aktiv? –
Und daher '.Select' sollte diesen Link vermieden werden :) Siehe http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –