Errore su istruzione Range
Hai un problema con Excel? 
Errore su istruzione Range
di chiaretta (utente non iscritto) data: 15/03/2017 20:37:49
Salve, in questo codice:
Worksheets("solleciti").Select
Range("A1:C100").Select
With Selection
.Interior.ColorIndex = 0
End With
mi da "Errore sul metodo Select per la classe Range"
ma qualche riga prima faccio la stessa cosa in un altro foglio e funziona:
Worksheets("iscritti").Select
Range("A2:Q2000").Select
With Selection
.Interior.ColorIndex = 0
End With
In cosa sbaglio?
Quello che voglio fare è semplicemente ripulire lo sfondo delle celle in un range.
Grazie
di alfrimpa data: 15/03/2017 21:06:29
Ciao Chiaretta
Allega il tuo file (con dati fittizi) e vediamo.
Alfredo
di chiaretta (utente non iscritto) data: 15/03/2017 21:28:28
Ho allegato il file. Parte con il bottone Ricalcola in alto a destra.
Sul foglio "iscritti" elimina il colore di sfondo mentre sul foglio "solleciti" va in errore.
Grazie
di alfrimpa data: 15/03/2017 21:44:56
Ciao Chiaretta
Non c'è bisogno di tutti quei Select e poi With Selection.
Puoi provare direttamente come sotto.
Alfredo
Worksheets("iscritti").Range("A2:Q2000").Interior.ColorIndex = xlNone
Worksheets("solleciti").Range("A1:C2000").Interior.ColorIndex = xlNone
Worksheets("edmodo").Range("A1:C2000").Interior.ColorIndex = xlNone
|
di chiaretta (utente non iscritto) data: 15/03/2017 21:54:53
Grazie per le indicazioni!
Mi piacerebbe però capire perchè mi dava quell'errore se le istruzioni erano identiche per evitare in futuro di ripetere cose simili.
Grazie ancora.
di alfrimpa data: 15/03/2017 22:09:21
Ciao Chiaretta
Mi spiace deluderti ma non so risponderti
Quello che posso dirti è che in VBA i Select vanno evitati il più possibile potendo, come hai visto, referenziare gli oggetti di Excel direttamente.
Spero di essere stato chiaro.
Alfredo
di chiaretta (utente non iscritto) data: 15/03/2017 22:26:53
Fa nulla.
Grazie ancora
di alfrimpa data: 15/03/2017 22:29:23
Grazie a te del riscontro.
Alfredo
di SAL (utente non iscritto) data: 16/03/2017 12:55:33
Ciao Chieretta
non sono espertissimo di VBA
comunque ti da errore perché prima di " Range("A1:C100").Select devi aggiungere Worksheets("solleciti").Range...()
vedi codice sotto
qualche riga prima non ti da errore perchè stai lavorando all'interno del foglio "iscritti" (la soluzione del comando é all'interno dell foglio dove c'è il bottone). . . mentre con il secondo comando cambi foglio (il cambio di colori avviene in altro foglio ("solleciti")
spero di essere stato chiaro
ciao
Salvatore
Worksheets("solleciti").Select
Worksheets("solleciti").Range("A1:C100").Select
With Selection
.Interior.ColorIndex = 0
End With |
di Luca73 data: 16/03/2017 13:04:51
Mi permetto di dissentire.
non è obbligatorio la selezione del worksheets. Se non viene specificato rimane valido quello attivo.
di sal (utente non iscritto) data: 16/03/2017 13:20:49
Ciao Luca
non sono sicuramente esperto come te . . . io sono autodidatta alle prime esperienze ... anzi proprio ieri mi hai dato un aiuto e ti ringrazio
in linea di logica è come dici tu . . . ma in pratica non avviene se non specifichi nuovamente il worsheets . . .
io l'ho sperimentato in vari programmini che mi sono fatto
quando la condizione del comando deve avvenire in altro foglio, mi dava sempre lo stesso errore di Chiaretta, l'ho risolto specificando sempre il worksheets
ho provato nel file di prova di Chiaretta e correggendo come dico io non da errore e funziona !
ciao Luca
di Luca73 data: 16/03/2017 14:53:44
Ciao
prova il programmino sotto riportato e vedrai che funziona.
L'unica se non specifichi il foglio l'effetto dipende da dove hai scritto la macro. Se sei nel folgio considera il range come quello del folgio altrimenti se sei in un modulo considera quello del foglio attivo
In ogni caso è sempre corretto selezionare il foglio o meglio indicare il range con relativo foglio.
A scanso di errori
Ciao
Luca
Sub pippo()
Sheets(1).Select
Sheets(2).Select
Sheets(2).Activate
Range("C1").Select
Range("A1:B2").Interior.ColorIndex = 5
End Sub
|
Vuoi Approfondire?