Errore su istruzione Range



  • 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