Come discusso nei commenti, non è possibile selezionare Sheets
in VBA che non sono attivi (o Range
oggetti su di essi).
Per esempio il codice
Sheets(1).Activate
Sheets(2).Range("A1").Select
causerà l'errore che si riceve dopo.
Nel tuo caso, sembra che si sta tentando di Select
un foglio che non è attiva - l'oggetto mainWS
non è presumibilmente il ActiveSheet
in corrispondenza del punto che si sta chiamando questo codice. Un modo semplice per verificare se questo sta accadendo è che se si aggiunge quanto segue alla fine del codice:
if (ActiveSheet.Name <> mainWS.Name) then
msgbox ("Going to crash after clicking ok!")
end if
mainWS.Select
Si noti che è possibile fare riferimento al foglio di lavoro attivato con il comando ActiveSheet
di ottenere sia le proprietà o qualunque altra operazione sei interessato a fare.
Questo errore può verificarsi anche se si lavora in loop su tutti i fogli di lavoro della cartella di lavoro e ci sono dei fogli nascosti. Cercalo.
scorso, e non collegati al tuo messaggio di errore specifico, presumo si dichiara tali variabili da qualche parte e semplicemente non li copia qui - se non vorrei considerare l'utilizzo di Option Explicit
come spesso è possibile imbattersi in ogni tipo di problema senza avere Option Explicit
nella parte superiore del codice VBA.
I vostri fogli in realtà il nome sheet1/Foglio3? La cartella di lavoro ha lo stesso nome? – enderland
È attivo 'mainWB'? –
E quindi ".Select" dovrebbe essere evitato :) Vedi questo link http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –