Linguetta fogli



  • Linguetta fogli
    di Carletto (utente non iscritto) data: 17/02/2015 06:59:09

    Salve, ho usato il registratore per eseguire questa operazione ma lui me la scrive sul foglio attivo e se cambio foglio ovviamente la macro non va più. Ho provato a modificarla cosi (nel codice VBA) ma mi da errore...

    Il registratore la scrive cosi:

    Sub LINGUETTA_FOGLIO()

    Sheets("Foglio9").Select
    ActiveWorkbook.Sheets("Foglio9").Tab.ColorIndex = 6

    End Sub

    Mi aiutereste a risolvere? non sono molto esperto di VBA
     
    Sub LINGUETTA_FOGLIO()
        
        ActiveSheet.Select
        ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 6
    
    End Sub



  • di Lisa B. data: 17/02/2015 07:14:40

    Strano! Ne sei sicuro? L'hai provata? Controlla meglio



  • di lepat (utente non iscritto) data: 17/02/2015 07:15:18

    basta togliere ActiveSheet.Select che non ha senso



  • di Vecchio Frac data: 17/02/2015 09:00:53

    cit. "ma mi da errore... "
    ---> Quale errore? su che riga di codice? siate più precisi quando esponete un problema soprattutto se vi riferite agli errori sollevati dal compilatore.

    Bisogna certamente utilizzare il registratore di macro, ma poi bisogna aprire l'editor, guardare cosa è stato prodotto, rileggerlo riga per riga e correggere le schifezze (errori di sintassi non dovrebbe farne, ma non ne sono sicuro). E' certamente quello che intende dire Lisa che sta pasticciando molto in VBA in questi giorni :o)
    Di certo il registratore di macro non produce codice compatto, omogeneo e adatto all'uso prefissato: utilissimo però per scovare comandi che si usano poco, oppure quando non ci ricordiamo esattamente come si scrive un'istruzione. A volte accade che nella marea delle istruzioni disponibili non ci ricordiamo dove pescare quella che ci serve (idem per gli attributi, metodi e proprietà, degli oggetti).

    L'oggetto "ActiveSheet" (che ha un suo senso, poverino ^_^) è un riferimento rapido al "foglio attivo".
    E quindi, se è già "attivo", non serve selezionarlo ulteriormente: è quello che intende dire lepat.
    Inoltre il foglio attivo è già nella cartella di lavoro attiva: non serve neanche questo riferimento.
    Il codice quindi si semplifica. Il risultato finale questo:
     
    Option Explicit
    
    Sub LINGUETTA_FOGLIO()
        
        ActiveSheet.Tab.ColorIndex = 6
    
    End Sub






  • di Lisa B. data: 17/02/2015 09:13:43

    Ha ha ha.... Dici bene.... Pasticciando!!!

    Comunque si... Mi riferivo a ciò che hai detto




  • di scossa data: 17/02/2015 09:51:05

    cit. VF: "... siate più precisi quando esponete un problema soprattutto se vi riferite agli errori sollevati dal compilatore ..."

    e soprattutto dite cosa volete fare/ottenere:
    cit. carletto: "ho usato il registratore per eseguire questa operazione ma lui me la scrive sul foglio attivo e se cambio foglio ovviamente la macro non va più. Ho provato a modificarla cosi (nel codice VBA) ma mi da errore ... "
    io non trovo scritto e - tanto meno - riesco a capire cosa ti serve


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)




  • di Vecchio Frac data: 17/02/2015 09:58:14

    Secondo me stava solo provando.