Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Colorare linguetta foglio

Ultimo Aggiornamento: 21/10/2021 16:31
Post: 46
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
21/10/2021 12:05

Colorare linguetta di rosso
Allego il file corretto e perfettamente funzionante....
L'errore era nell'evento che veniva intercettato per la macro:
- l'evento giusto da intercettare è _SheetActivate e non _SheetChange
- l' evento _SheetChange intercetta lo spostamento di cella sul foglio, e non il cambio di foglio
- a questo punto la macro che avevo già inviato, e che ho "affinato", funzione egregiamente, come doveva...

Ho provato, e le linguette si sono colorate.

Buon lavoro

Continua a esercitare le macro e il VBA, sono utilissime.

Resto a disposizione per qualsiasi problema o richiesta.

Dario Nardella
Post: 47
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
21/10/2021 12:14

Colorare linguetta di rosso
Di seguito la macro corretta:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Dim n As Integer
For n = 1 To Worksheets.Count
With Sheets(n)
If .Cells(6, 3) = .Cells(8, 3) And .Cells(6, 3) > 0 Then
Sheets(n).Tab.Color = 255
Else
Sheets(n).Tab.Color = xlNone
End If
End With
Next n

End Sub
Post: 2.471
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
21/10/2021 12:57

ciao
Dodo

onestamente con il punto davanti non funziona neanche a me.

win10 e 365
chiaro che io sono un formula dipendente
e con le macro ci bisticcio😀
[Modificato da federico460 21/10/2021 12:57]
Post: 26
Registrato il: 08/07/2017
Città: SUSEGANA
Età: 62
Utente Junior
2003
OFFLINE
21/10/2021 13:00

Re:
dodo47, 21/10/2021 11:28:

ciao
io dico di no....(con tutto il rispetto per fede).....comunque contento tu....

Quel codice lavora solo sul foglio attivo, pertanto il loop tra tutti i fogli è inutile.
Quindi se sei in un foglio, modifichi qualcosa e si verificano le condizioni, solo il foglio dove sei colorerà il tab di rosso.

Pertanto se il tuo scopo è quello di colorare solo il tab del foglio attivo il loop è inutile, se invece lo scopo è: qualsiasi cambiamento in qualsiasi foglio deve verificare in tutti i fogli se le condizioni sono vere quel loop va fatto con le modifiche indicate da Nardella

saluti



Eppure funziona, vedi allegato

Post: 3.229
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
21/10/2021 13:24

ciao
ho detto di no in quanto ritenevo che le formule fossero interconnesse tra i fogli, ovvero per esempio il foglio 1 avesse formule che dipendessero dal foglio 2 etc etc.

Poichè ogni foglio non ha riferimenti ad altri fogli, ti funziona ma tanto vale non fare il loop dei fogli in quanto è inutile.

Questo il codice che devi adottare, in quanto ogni foglio è a se stante, ovvero i calcoli di un foglio non influiscono sugli altri fogli.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Cells(6, 3) = Cells(8, 3) And Cells(6, 3) > 0 Then
    ActiveSheet.Tab.Color = 255
Else
    ActiveSheet.Tab.Color = xlNone
End If
End Sub


Nel caso in cui i fogli fossero connessi tra loro con formule che riguardano le celle da controllare, allora si che sarebbe necessario il loop che controlla in ogni foglio cosa avviene e pertanto il riferimento allo sheets(n) andrebbe fatto con il punto.

Spero sia chiaro.....

saluti




[Modificato da dodo47 21/10/2021 13:26]
Domenico
Win 10 - Excel 2016
Post: 27
Registrato il: 08/07/2017
Città: SUSEGANA
Età: 62
Utente Junior
2003
OFFLINE
21/10/2021 15:21

Re:
dodo47, 21/10/2021 13:24:

ciao
ho detto di no in quanto ritenevo che le formule fossero interconnesse tra i fogli, ovvero per esempio il foglio 1 avesse formule che dipendessero dal foglio 2 etc etc.

Poichè ogni foglio non ha riferimenti ad altri fogli, ti funziona ma tanto vale non fare il loop dei fogli in quanto è inutile.

Questo il codice che devi adottare, in quanto ogni foglio è a se stante, ovvero i calcoli di un foglio non influiscono sugli altri fogli.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Cells(6, 3) = Cells(8, 3) And Cells(6, 3) > 0 Then
    ActiveSheet.Tab.Color = 255
Else
    ActiveSheet.Tab.Color = xlNone
End If
End Sub


Nel caso in cui i fogli fossero connessi tra loro con formule che riguardano le celle da controllare, allora si che sarebbe necessario il loop che controlla in ogni foglio cosa avviene e pertanto il riferimento allo sheets(n) andrebbe fatto con il punto.

Spero sia chiaro.....

saluti


OK capito. Grazie







Post: 48
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
21/10/2021 15:37

Colorare linguetta di rosso
Colorare linguetta di rosso
Allego il file corretto e perfettamente funzionante....
L'errore era nell'evento che veniva intercettato per la macro:
- l'evento giusto da intercettare è _SheetActivate e non _SheetChange
- l' evento _SheetChange intercetta lo spostamento di cella sul foglio, e non il cambio di foglio
- a questo punto la macro che avevo già inviato, e che ho "affinato", funzione egregiamente, come doveva...

Ho provato, e le linguette si sono colorate.

Colorare linguetta di rosso
Di seguito la macro corretta:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Dim n As Integer
For n = 1 To Worksheets.Count
With Sheets(n)
If .Cells(6, 3) = .Cells(8, 3) And .Cells(6, 3) > 0 Then
Sheets(n).Tab.Color = 255
Else
Sheets(n).Tab.Color = xlNone
End If
End With
Next n

End Sub

Buon lavoro
Post: 3.230
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
21/10/2021 16:31


@darionardella

E' sbagliato il tuo concetto dario:

1) l'evento da te utilizzato (Workbook_SheetActivate) viene eseguito soltanto nel momento dell'attivazione del foglio.
Se quando attivi il foglio la condizione già esiste allora il tab viene colorato. Ma se stai nel foglio e apporti una modifica che genera la condizione, il tab non si colora.

2) quanto da te detto:

- l' evento _SheetChange intercetta lo spostamento di cella sul foglio, e non il cambio di foglio

non corrisponde al vero. l'evento SheetChange intercetta la modifica di una cella, quello che intercetta lo spostamento di chiama Workbook_SheetSelectionChange

3) il loop tra i fogli è inutile per i motivi esposti nel mio ultimo post

saluti



Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
MENU A TENDINA CON AUTOCOMPLETAMENTO (2 messaggi, agg.: 22/08/2018 11:03)
colorare con tasti (10 messaggi, agg.: 14/05/2020 10:12)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 07:21. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com