Excel e gli applicativi Microsoft Office Formattazione condizionale con vba.

Login Registrati
Stai vedendo 22 articoli - dal 1 a 22 (di 22 totali)
  • Autore
    Articoli
  • #43191 Score: 0 | Risposta

    GiuseppeMN
    Partecipante
      19 pts

      Buona giornata;
      nell'esempio in allegato ho impostato "Formattazione condizionale" con "Lettura facilitata" nel Range "=$A$3:$A$7" con le regole:
      =(E(RESTO(RIF.RIGA($A3);2)=0;$A3<>""))
      e
      =(E(RESTO(RIF.RIGA($A3);2)<>0;$A3<>""))

      Formattazione condizionale

      Per qualche motivo che ancora mi sfugge, a volte, il Range viene modificato.
      Chiedo se è possibile impostare nuovamente il Range "=$A$3:$A$70" con Codice VBA.

      Al momento ho provvisoriamente risolto con il Codice:

      Option Explicit
      
      Sub Riquadra()
      Application.ScreenUpdating = False
      
          Range("A3:A7").Select
          Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="="""""
          Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
              With Selection.FormatConditions(1).Borders(xlLeft)
                  .LineStyle = xlContinuous
              End With
          With Selection.FormatConditions(1).Borders(xlRight)
              .LineStyle = xlContinuous
          End With
              With Selection.FormatConditions(1).Borders(xlTop)
                  .LineStyle = xlContinuous
              End With
          With Selection.FormatConditions(1).Borders(xlBottom)
              .LineStyle = xlContinuous
          End With
              Selection.FormatConditions(1).StopIfTrue = False
              Range("C2").Select
      Application.ScreenUpdating = True
      End Sub

      che risolve la "Formattazione condizionale" riquadrando i record ma senza proporre la "Lettura facilitata".

      Qualche suggerimento?

      Grazie dell'attenzione che potrete dedicarmi.

      Giuseppe

      Allegati:
      You must be logged in to view attached files.
      #43199 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        GiuseppeMN ha scritto:

        ho impostato "Formattazione condizionale" con "Lettura facilitata"

        Cos'è la "lettura facilitata" ?

        #43200 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Nel merito del codice della Sub Riquadra(), puoi compattare il codice sia evitando di ripetere il riferimento a Selection (ti basta un With iniziale) sia evitando di impostare ogni singola proprietà Borders perchè la collection Borders() si riferisce già a tutti gli orientamenti 8esterni) della cella:

          Sub Riquadra()
              Application.ScreenUpdating = False
          
              With Range("A3:A7")
                  .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="="""""
                  .FormatConditions(.FormatConditions.Count).SetFirstPriority
                  .FormatConditions(1).Borders.LineStyle = xlContinuous
                  .FormatConditions(1).StopIfTrue = False
              End With
                  
              Range("C2").Select
              Application.ScreenUpdating = True
          End Sub
          #43201 Score: 0 | Risposta

          GiuseppeMN
          Partecipante
            19 pts

            Buon pomeriggio vecchio frak;

            Cos'è la "lettura facilitata" ?

            La "Lettura facilitata" prevede di alternare le righe con fondo "neutro" da quelle con fondo "colorate".

             

            ... ti basta un With iniziale

            Ti ringrazio del suggerimento che però non risolve il mio problema della "Lettura facilitata".

            Giuseppe

            #43203 Score: 0 | Risposta

            gianfranco55
            Partecipante
              91 pts

              ciao

              Per qualche motivo che ancora mi sfugge, a volte, il Range viene modificato.

               

              il range della formattazione viene spezzato modificato ecc...

              solo se inserisci annulli righe..........altrimenti è fisso

              #43205 Score: 0 | Risposta

              Marius44
              Moderatore
                58 pts

                Salve a tutti

                Senza ricorrere al VBA seleziona l'intervallo che ti interessa e nella FC inserisci questa formula:

                =E(A2<>"";RESTO(SUBTOTALE(3;$A$1:$A2);2))

                e scegli la bordatura e il colore per l'alternanza.

                Fai sapere. Ciao,

                Mario

                #43211 Score: 0 | Risposta

                Aldo Ercolini
                Partecipante
                  19 pts

                  Non ho provato ma penso che una cosa cosi' dovrebbe funzionare:

                      Sub Riquadra()
                      
                      Application.ScreenUpdating = False
                  
                      With Range("A3:A7")
                          .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:="="""""
                          .FormatConditions(.FormatConditions.Count).SetFirstPriority
                          .FormatConditions(1).Borders.LineStyle = xlContinuous
                          .FormatConditions(1).StopIfTrue = False
                  
                          .FormatConditions.Add Type:=xlExpression, Formula1:= _
                          "=(E(RESTO(RIF.RIGA($A3);2)=0;$A3<>""""))"
                          .FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
                          .FormatConditions(1).Interior
                          .PatternColorIndex = xlAutomatic
                          .ThemeColor = xlThemeColorAccent1
                          .TintAndShade = 0.799981688894314 io ho messo un colore a caso
                          .FormatConditions(1).StopIfTrue = False
                  
                          'e qui continui con l'altra formula con lo stesso concetto per l'altro colore
                  
                      End With
                  
                  End Sub
                     

                   

                  #43212 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Pensando ad alta voce, non si potrebbe creare una tabella (in senso stretto: un ListObject)  e applicare un formato predefinito a righe alternate?

                    #43218 Score: 0 | Risposta

                    GiuseppeMN
                    Partecipante
                      19 pts

                      Buona sera Aldo Ercolini;

                      Ti ringrazio del tuo contributo, purtroppo il Tuo codice genera un errore di run-time:

                      Errore run-time

                      Vedrò di verificare il Tuo codice ed aggiornarti su eventuali sviluppi.

                       

                      Grazie della Tua attenzione.

                      Giuseppe

                      #43220 Score: 0 | Risposta

                      GiuseppeMN
                      Partecipante
                        19 pts

                        Buona sera vecchio frak;

                        ... si potrebbe creare una tabella (in senso stretto: un ListObject) e applicare un formato predefinito a righe alternate?

                        Temo di no; nell'immagine in allegato puoi ben vedere che il range è variabile in funzione della Directory (Cartella) selezionata e delle opzioni scelte.

                        Cerca file.
                        Giuseppe

                         

                        A margine di quanto sopra, perdonami vecchio frac, credo di dover rinunciare a seguirvi su questo Forum; rientrando per verificare eventuali sviluppi delle Discussioni ho "perso" 7 minuti per gestire il consenso ai "Cookie" e "Intresse legittimo".

                        Sono consapevole che è interesse legittimo utilizzare "Cookie" per questo e altri Forum ma, alla mia età, 7 minuti sono veramente troppi, una volta dichiarati tutti i consensi , credo, si potrebbe evitare di riproporre continuamente le stesse richieste.

                        Auguro a Tutti buon Lavoro.

                        Giuseppe

                         

                         

                        #43221 Score: 1 | Risposta

                        Raffaele53
                        Partecipante
                          23 pts

                          Da provare

                          `Sub Riquadra2()
                          Set Rng = ThisWorkbook.Worksheets("Foglio1").Range("A3:A7")
                          With Rng
                              .FormatConditions.Delete
                              .FormatConditions.Add Type:=xlExpression, Formula1:="=(E(RESTO(RIF.RIGA($A3);2)=0;$A3<>""""))"
                              With .FormatConditions(1).Interior
                                  .PatternColorIndex = xlAutomatic
                                  .Color = -4015 'azzuro chiaro
                                  .TintAndShade = 0
                              End With
                          End With
                          End Sub`

                          Colora come preferisci una cella qualsiasi, posizionati sopra e usa questo per conoscere il numero

                          Sub cokore_cella()
                          'MsgBox ActiveCell.Interior.Pattern
                          MsgBox ActiveCell.Interior.PatternColorIndex
                          'MsgBox ActiveCell.Interior.ThemeColor
                          'MsgBox ActiveCell.Interior.TintAndShade
                          'MsgBox ActiveCell.Interior.PatternTintAndShade
                          'MsgBox ActiveCell.Interior.ColorIndex
                          'MsgBox ActiveCell.Interior.Color
                          End Sub
                          #43223 Score: 0 | Risposta

                          GiuseppeMN
                          Partecipante
                            19 pts

                            Buona giornata Raffaele;
                            grazie della Tua proposta, soluzione interessante.

                            Vedo di adattarla alle mie reali esigenze.

                            A Tua disposizione in poargepe@libero.it

                            Giuseppe

                            #43225 Score: 0 | Risposta

                            Marius44
                            Moderatore
                              58 pts

                              Buongiorno GiuseppeMN

                              Non hai detto una parola circa la formula da me proposta (post #43205). L'hai provata? Non funziona come dovrebbe? Che problemi ti ha creato? Oppure non ho capito io e volevi SOLO una soluzione con VBA?

                              Scusa l'insistenza ma mi premeva (e mi preme) sapere se dava il risultato voluto.

                              Scusa se ti ho importunato. Grazie e ciao,

                              Mario

                              #43227 Score: 1 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                GiuseppeMN ha scritto:

                                credo di dover rinunciare a seguirvi su questo Forum; rientrando per verificare eventuali sviluppi delle Discussioni ho "perso" 7 minuti per gestire il consenso ai "Cookie" e "Intresse legittimo".

                                Ho notato anch'io, qualche giorno fa, una certa insistenza da parte del forum a chiedermi l'approvazione dei cookies. Credo che si sia trattato di un'anomalia temporanea. In ogni caso mi dispiace se ci abbandoni ma capisco che per ciascuno di noi il proprio tempo è assolutamente prezioso e quindi la tua decisione verrà rispettata senza che ciò sia pregiudizievole nei tuoi confronti.

                                Vale a dire: sentiti liberissimo di andare e tornare quando vuoi   

                                (Come direbbe Adam Douglas: "...addio e grazie per tutto il pesce")

                                #43228 Score: 0 | Risposta

                                GiuseppeMN

                                  Buona giornata Marius;
                                  effettivamente mi serve una soluzione solo con VBA.
                                  In realtà la possibilità di ripristinare il range già impostato in "Formattazione condizionale".
                                  Nel file, del quale ho proposto l'immagine, quando scelo determinate funzioni, esempio "Stampa Directory", a volte,vengono modificati i riferimenti in "Formattazione condizionale"
                                  A questo punto, per ripristinare il range devo:
                                  Aprire "Formattazione condizionale"
                                  e
                                  Manualmente, ripristinare i parametri

                                  Niente di drammatico ma cercavo un modo automatico per ripristinare il range.

                                  Grazie della tua attenzione.

                                  Giuseppe

                                  #43229 Score: 0 | Risposta

                                  GiuseppeMN
                                  Partecipante
                                    19 pts

                                    Raffaele, ho notato che non sono visibili le immagini che avevo allegato, provo a riproporle.

                                    Queste sono le impostazioni originali.

                                    Queste sono le impostazioni modificate da ripristinare.

                                    Giuseppe

                                    #43230 Score: 0 | Risposta

                                    GiuseppeMN
                                    Partecipante
                                      19 pts

                                      Buona giornata vecchio frac;

                                      Credo che si sia trattato di un'anomalia temporanea.

                                      Verificherò nei prosimi giorni e, se l'anoamlia sarà risolta, sarò ben felice di continuare a partecipare in Forum.

                                      Grazie di tutto.

                                      Giuseppe

                                      #43232 Score: 0 | Risposta

                                      Raffaele53
                                      Partecipante
                                        23 pts

                                        Non capisco quale problema ci sia...a parte il range A3 o A4 -- A7 o D1000
                                        Se la cella in colonna A è piena + la riga è pari mette un colore
                                        Ci sarà solo una condizione (colore azzuro), se sbagliato lascia il bianco
                                        Perchè hai due condizioni? Hai due colori?

                                        >>>Set Rng = ThisWorkbook.Worksheets("NOME-FOGLIO").Range("A4:D1000")
                                        NOME-FOGLIO + Range("A4:D1000")

                                        >>>.FormatConditions.Delete
                                        Qualsiasi Formattazione-Condizionale (giusta o errata) viene eliminata e crea una sola condizione...=(E(RESTO(RIF.RIGA($A3);2)=0;$A3<>""))

                                        #43235 Score: 0 | Risposta

                                        GiuseppeMN
                                        Partecipante
                                          19 pts

                                          Buona sera Raffaele;

                                          Perchè hai due condizioni? Hai due colori?

                                          Ho due colori; come puoi notare, nella seconda immagine della risposta #43229 la "Formattazione condizionale" è corretta fino alla riga 10 poi è necessario ripristinare i range.
                                          In buona sostanza sarebbe sufficiente ripristinare i due range; con il tuo codice ripristino tutto range, colori e riquadri.

                                          Molto indegnamente ho modicato il tuo codice in questo modo mi sembra accettabile.

                                          Option Explicit

                                          Sub Ripristina()
                                          Dim rng As Range
                                          Set rng = ThisWorkbook.Worksheets("Foglio1").Range("A3:A10000")
                                          With rng

                                          .FormatConditions.Delete
                                          .FormatConditions.Add Type:=xlExpression, Formula1:="=(E(RESTO(RIF.RIGA($A3);2)=0;$A3<>""""))"
                                          .FormatConditions(1).Borders.LineStyle = xlContinuous

                                          .FormatConditions.Add Type:=xlExpression, Formula1:="=(E(RESTO(RIF.RIGA($A3);2)<>0;$A3<>""""))"
                                          .FormatConditions(2).Borders.LineStyle = xlContinuous

                                          With .FormatConditions(2).Interior
                                          .PatternColorIndex = xlAutomatic
                                          .Color = -10
                                          .TintAndShade = 0
                                          End With
                                          End With
                                          End Sub

                                          In realtà il secondo colore, ora è -10, preferirei fosse grigio chiaro; ma questo è solo un dettaglio che vedrò di sistemare.

                                          Giuseppe

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #43237 Score: 0 | Risposta

                                          Raffaele53
                                          Partecipante
                                            23 pts

                                            Trovato in rete il codice

                                            #43255 Score: 0 | Risposta

                                            GiuseppeMN
                                            Partecipante
                                              19 pts

                                              Buona giornata gianfranco55.
                                              Grazie della tua attenzione dedicatami in risposta #43203; Solo ora riesco a darti riscontro e mi scuso del ritardo.

                                              il range della formattazione viene spezzato modificato ecc...
                                              solo se inserisci annulli righe..........altrimenti è fisso

                                              Il mio unico dubbio è sull'istruzione:

                                              ActiveSheet.Range("$A$2:$A$10000").RemoveDuplicates Columns:=1, Header:=xlYes

                                              Ma ho risolto con la prosta di Raffaele53 nella risposta #43221 opportunamente adattata alle mie necessità.

                                              Buon fine settimana.

                                              Giuseppe

                                              #43256 Score: 0 | Risposta

                                              gianfranco55
                                              Partecipante
                                                91 pts

                                                ciao

                                                Giuseppe

                                                .RemoveDuplicates

                                                non è un dubbio sfortunatamente è una realtà

                                                la formattazione condizionale viene spezzettata....è un assurdo ma lo fa

                                              Login Registrati
                                              Stai vedendo 22 articoli - dal 1 a 22 (di 22 totali)
                                              Rispondi a: Formattazione condizionale con vba.
                                              Gli allegati sono permessi solo ad utenti REGISTRATI
                                              Le tue informazioni: