Excel Forum Per condividere esperienze su Microsoft Excel

aiuto x cambiare Cambiare colore carattere mediante menu a tendina!

  • Messaggi
  • OFFLINE
    fabrizio.ExcelForum
    Post: 79
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 03/12/2021 18:57
    Ciao a tutti ! ringrazio vivamente per tutti gli aiuti ricevuti , e avrei la neccessita' di risolvere un piccolo problema:
    allego solo una parte del file mio excel per semplificare.
    In pratica in ax19 tramite menu a tendina posso scegliere se "mostra imp" oppure "nascondi imp", l'intento è quello che se seleziono "mostra imp" le celle k18:r19 devono rimanere testo nero come ora , se invece seleziono "nascondi Imp" devono assumere il colore dello sfondo della cella Azzurro cosi' da scomparire.
    Ovviamente qui ho incollato una sola voce di capitolato, ovviamente puo' essere anche popolato di altre righe e l'iserimento di altre voci di capitolato.
    se qualcuno che potesse aiutarmi ...
    grazie
  • OFFLINE
    by sal
    Post: 6.614
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 03/12/2021 19:12
    Ciao credo che la formattazione condizionale possa bastare

    ecco il file, Ciao By Sal (8-D
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    fabrizio.ExcelForum
    Post: 79
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 03/12/2021 19:21
    Ciao Salvatore grazie!!
    anche io avevo provato con quella soluzione, ma come vedrai nel file che ti riallego se inserisco piu' voci, con quel tipo di formattazione condizionale mi rimane collegato anche per la seconda voce ax19, mentre per la voce 2 deve essere attiva ax35 e cosi' via se inserisco altre voci...
  • OFFLINE
    Marius44
    Post: 964
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 04/12/2021 08:20
    Salve a tutti
    Nella FC relativa alla cella K34 non devi mettere la stessa formula inserita in K19 ma devi fare riferimento alla nuova cella, cioè

    =$AX$34="Nascondi imp"

    Il tutto se ho capito bene la tua esigenza.
    Ciao,
    Mario
  • OFFLINE
    fabrizio.ExcelForum
    Post: 80
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 04/12/2021 10:20
    Ciao Mario .. intanto grazie mille!!
    ,per capirci, io dovrei copiare e incollare tutta una serie di voci in base alle esigenze, e mi serve una alternativa per non inserire tutte le volte la formula manualmente ma che sia dinamica, o tramite vba.!
    Grazie.
    [Modificato da fabrizio.ExcelForum 04/12/2021 10:20]
  • OFFLINE
    by sal
    Post: 6.616
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 04/12/2021 11:17
    Ciao, non avevo capito che ti serviva su più intervalli, a questo punto meglio ricorrere al VBA, eccoti la macro, la devi copiare nel modulo del foglio interessato.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d
    
    If Not Intersect(Target, [ax:ax]) Is Nothing Then
      r = Target.Row: c = Target.Column: d = Target
      If Target = "" Then Exit Sub
      If Target = "Mostra imp" Then
        Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(0, 0, 0)
      Else
        Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(217, 225, 242)
      End If
    End If
    End Sub


    ogni volta che modifichi la voce del menu a tendina avviene la variazione.

    Ciao By Sal (8-D

    [Modificato da by sal 04/12/2021 11:17]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    fabrizio.ExcelForum
    Post: 81
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 04/12/2021 11:38
    Funziona perfettamente!! GRAZIE Salvatore... è la soluzione che fa al caso!!
    👍
  • OFFLINE
    fabrizio.ExcelForum
    Post: 82
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 10/12/2021 19:49
    Ciao Salvatore noto che avviando delle macro che ho nel foglio di lavoro le quali mi copiano delle righe di un altro foglio di lavoro e incollano nel foglio di lavoro ,mi appare errore run-time13, "tipo non corrispondente e in visual-basic mi evidenzia


    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d

    If Not Intersect(Target, [ax:ax]) Is Nothing Then
    r = Target.Row: c = Target.Column: d = Target
    If Target = "" Then Exit Sub
    If Target = "Mostra imp" Then
    Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(0, 0, 0)
    Else
    Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(217, 225, 242)
    End If
    End If
    End Sub
    Secondo te che cosa da questo tipo di errore? io ho cercato ma purtroppo non ho risolto niente!!
    grazie😃
  • OFFLINE
    by sal
    Post: 6.622
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 11/12/2021 08:29
    Ciao Fabrizio, il problema può essere, quando vengono selezionate o copiate più celle, il "Target" va in confusione.

    a questo punto sostituisci

    If Target = "" Then Exit Sub

    con

    If d = "" Then Exit Sub

    se nemmeno funziona, inserisci appena sotto, ed appena Prima

    If Not Intersect(Target, [ax:ax]) Is Nothing Then
    Application.Enableevents = False -----------------> da inserire
    .
    .
    Application.EnableEvents = True ------------------> da inserire
    End Sub

    vedi che l'editor del sito tenta di correggere gli errori di scrittura mettendo la "o" al posto della "e" quindi False è con la "e" finale

    Ciao By Sal (8-D
    [Modificato da by sal 11/12/2021 08:33]
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    fabrizio.ExcelForum
    Post: 83
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 11/12/2021 14:24
    Grazie Salvatore , ho provato con il cosice sotto , ma purtroppo mi persiste lo stesso errore quando tento di copiare e incollare delle righe.
    Avevo provato anche io ad aggiungere " Application.EnableEvents = False .....Application.EnableEvents = True" ma senza successo.


    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c, d

    If Not Intersect(Target, [ax:ax]) Is Nothing Then
    Application.EnableEvents = False


    r = Target.Row: c = Target.Column: d = Target
    If d = "" Then Exit Sub
    If d = "Mostra imp" Then


    Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(0, 0, 0)

    Else
    Range(Cells(r - 1, 11), Cells(r, 18)).Font.Color = RGB(218, 238, 243)



    End If
    End If
    Application.EnableEvents = True
    End Sub
  • OFFLINE
    by sal
    Post: 6.623
    Registrato il: 14/11/2004
    Utente Master
    Office 2019
    00 12/12/2021 07:44
    mandami il file e vediamo se lo fa anche da me dicendomi cosa copiare e dove inserirlo.

    Ciao By sal (8-D
    se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
  • OFFLINE
    fabrizio.ExcelForum
    Post: 84
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 12/12/2021 16:19
    Ciao Salvatore grazie ti allego parte del file .
    Ho ricopiato solo una sub per farti vedere il tipo di errore.
    Se ti posizioni nel foglio "sal" sulla cella per esempio c17.
    Poi premi sul "pulsante 2 " che ho inserito in riferimento cella "j3" , la macro mi dovrebbe copiare la riga.
    Pero' mi va in crash il codice in questione e mi continua ad evidenziare " If d = "" Then Exit Sub"
    grazie Mille 👍
  • OFFLINE
    Marius44
    Post: 965
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 12/12/2021 17:46
    Ciao a tutti

    Innanzi tutto un caro saluto a Salvatore.

    Non ho seguito più dopo il primo intervento e, pertanto, potrei anche sbagliare e mi scuso in anticipo.

    Non credo che il problema sia nella macro indicata bensì nella macro Sub Macro75bis() assegnata al pulsante 2.
    Nella suddetta macro ho aggiunto all'inizio e alla fine Application.EnableEvents = False/True

    L'altra macro ( quella relativa al WorkSkeet_Change del Foglio("sal")) ha alcune imperfezioni
    1°) la dichiarazione delle variabili è meglio sia esplicita altrimenti si occupa inutilmente un sacco di memoria; la Dim r, c, d pone tutte e tre le variabili come Variant mentre è più corretto dichiarare la r e la c come Long (visto che si riferisco a riga e colonna);
    2°) la variabile d è inutile; Target va bene (ricordarsi che Target è un Range);
    3°) salvo errori (e qui posso sbagliarmi perchè non so se ci sono altre macro che potrebbe ero andare in conflitto) le righe Application.EnableEvents = False/True possono eliminarsi.

    Riallego il file con le variazioni di cui sopra.

    Ciao,
    Mario
  • OFFLINE
    fabrizio.ExcelForum
    Post: 85
    Registrato il: 04/03/2017
    Città: MILANO
    Età: 44
    Utente Junior
    2010
    00 12/12/2021 18:58
    Ciao Marius Grazie per la tua collaborazione, ora funziona tutto perfettamente! grazie per l'aiuto!.
    Un caro saluto e buon Natale a tutti!
    ciao👍🧐