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

    BOLDOS75
    Partecipante

      Buongiorno, chiedo un consiglio per questo quesito, nel file che allego, ho creato con Vba il seguente codice, quando seleziono la cella attiva vuota mi colora la cella, ma se seleziono la cella con la formattazione condizionale (A1) questa non cambia colore è possibile con un codice che ciò avvenga oppure non è possibile?

       

      #42096 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        BOLDOS75 ha scritto:

        nel file che allego

        Allega il file perchè non c'è   

        #42097 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          BOLDOS75 ha scritto:

          se seleziono la cella con la formattazione condizionale (A1) questa non cambia colore è possibile con un codice che ciò avvenga oppure non è possibile?

          Comunque credo che la formattazione condizionale abbia la precedenza alla formattazione manuale, anche se pilotata da codice.

          #42099 Score: 0 | Risposta

          LucaSR
          Partecipante
            15 pts

            vecchio frac ha scritto:

            Comunque credo che la formattazione condizionale abbia la precedenza alla formattazione manuale, anche se pilotata da codice.

            Esatto! O da codice o preparata manualmente, la formattazione condizionale ha la priorità sulla formazione normale proprio per la funzione che ricopre   

            #42117 Score: 1 | Risposta

            Luca73
            Partecipante
              58 pts

              Confermo, ho fatto un po' di prove e la formattazione condizionale è dominanete rispetto sia alla formattazione "manuale" che impostata da Codice.

              Il colore impostato in una cella dalla formattazione condizionale è leggibile tramite la proprietà DisplayFormat.Interior.Color che però è in sola lettura ovvero non può essere modificato.

              Ciao Luca

              #42166 Score: 0 | Risposta

              BOLDOS75
              Partecipante

                allego file

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

                vecchio frac
                Senior Moderator
                  272 pts

                  Un'idea pazzesca, e valida solo a scopo didattico, è questa: se mi imbatto in una cella con formattazione condizionale allora ne salvo le impostazioni in una variabile pubblica (posizione e formati della condizione), quindi cancello la formattazione condizionale (e la cella assume il colore desiderato quando si sposta la selezione). Poi quando mi sposto in altra cella, prima di tutto reimposto la precedente recuperandole, se c'erano per quella cella, le impostazioni di formattazione condizionale. Quindi passo a esaminare la cella corrente e ricomincio il processo.

                  Non ne vale molto la pena però anche se sarebbe una sfida da proporre   

                  #42174 Score: 0 | Risposta

                  LucaSR
                  Partecipante
                    15 pts

                    Scusa ma con una formattazione condizionale multipla non ti sbrighi prima? Qualche giorno fa ho risposto ad un utente (ancora non l'ho rivisto) preparando un file con solo formattazione condizionale. Non ricordo quale fosse il topic, ma era verificare la data inserita e se minore di 1 mese cella gialla, invece se oltre la data cella rossa.

                    Dovrei avere ancora il file, potrei postarlo se può interessare, spero solo di ricordarne il nome      non posso aprirlo per verificare!!   

                    #42176 Score: 0 | Risposta

                    LucaSR
                    Partecipante
                      15 pts

                      Trovato il topic sopra descritto:

                      Semplificare istruzioni vba.

                       

                      #42177 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        Ecco qui una proposta. Solo per giocare, sia chiaro   

                        (Il codice sostituisce tutto il tuo)

                        Option Explicit
                        
                        Private mycell As tCell
                        
                        Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)        'Funziona
                            If Target.FormatConditions.Count > 0 Then
                                With mycell
                                    .addr = Target.Address
                                    .formul1 = Target.FormatConditions(1).Formula1
                                    .coloridx = Target.FormatConditions(1).Interior.ColorIndex
                                    .hasformat = True
                                End With
                                Target.FormatConditions.Delete
                                Target.Interior.ColorIndex = 8
                            ElseIf mycell.hasformat Then
                                    With sh.Range(mycell.addr)
                                        .FormatConditions.Add Type:=xlExpression, Formula1:=mycell.formul1
                                        .FormatConditions(1).Interior.ColorIndex = mycell.coloridx
                                        .FormatConditions(1).StopIfTrue = False
                                    End With
                                    mycell.hasformat = False
                            Else
                                If mycell.addr <> "" Then sh.Range(mycell.addr).Interior.ColorIndex = 0
                                With mycell
                                    .addr = Target.Address
                                    .formul1 = ""
                                    .coloridx = 0
                                    .hasformat = False
                                End With
                                Target.Interior.ColorIndex = 8
                            End If
                        End Sub
                        #42179 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          LucaSR ha scritto:

                          Scusa ma con una formattazione condizionale multipla non ti sbrighi prima?

                          Ma cosa intendi di preciso? La formattazione condizionale si può attivare "se la cella è attiva" ? perchè lui voleva l'effetto visivo di una cella che si colora di azzurro quando sposta il cursore, mantenendo la formattazione esistente.

                          Nota sul mio codice di poco fa: se ci sono formattazioni multiple su una cella, queste non vengono mantenute. Bisogna ricrearle nel codice che però era solo un esempio della fattibilità, ma in produzione non complicherei così le cose.

                          #42181 Score: 0 | Risposta

                          LucaSR
                          Partecipante
                            15 pts

                            Mi ero perso questo passaggio

                            vecchio frac ha scritto:

                            perchè lui voleva l'effetto visivo di una cella che si colora di azzurro quando sposta il cursore, mantenendo la formattazione esistente

                            Con lo spostamento della cella non penso, ma basterebbe inserire un qualsiasi valore e magari impostare tramite formattazione condizionale lo stesso colore tra font e sfondo della cella 

                             

                            #42182 Score: 0 | Risposta

                            Luca73
                            Partecipante
                              58 pts

                              Ciao VF, ma funziona anche se la cella Avesse una Formattazione Condizionale condivisa con altre in un range

                              Ad esempio se io metto in formattazione condizionale il Range A1:A5?

                              A me dà errore sulla dichiarazione di variabile

                              Private mycell As tCell

                              User defined type not defined

                              #42183 Score: 0 | Risposta

                              Luca73
                              Partecipante
                                58 pts

                                Proposta completamente alternativa che ho applicato in un mio file.

                                Avevo preparato un calendario abnnuale in cui avevo riempito di formttazioni condizionali in intervalli non adiacenti 

                                c'erano sabati, domeniche, festività, giorni di ferie, di malattia,di riposo, giorno presente e giorni lavorati,.....

                                PIù le relative combinazione (es festività in domenica)

                                Ad un certo punto la formattazione condizionale è diventata talmente complicata e macchinosa che ho preferito gestire la la colorazione di tutte le celle tramite macro.

                                Una macro scatenata da un Worksheet_Change.

                                Così' mi sono permesso di uscire anche dai limiti della formattazione condizionale (ad esempio lo spessore / tipo dei bordi) e di modificare anche altezze e larghezze delle celle.

                                Con la mia macro ho perso sicuramente in velocità di esecuzione ma per qullo che serviva a me e l'uso che facevo del file era perfetta.

                                 

                                #42196 Score: 0 | Risposta

                                scossa
                                Partecipante
                                  37 pts

                                  vecchio frac ha scritto:

                                  Nota sul mio codice di poco fa: se ci sono formattazioni multiple su una cella, queste non vengono mantenute

                                  Ciao,

                                  una soluzione semplice: anziché togliere la FC alle eventuali celle con FC e poi colorarle, semplicemente aggiungiamo una nuova regola che imposti lo sfondo alla cella selezionata e la elimini quando viene "deselezionata". Il seguente codice (funzionante) dovrebbe chiarire:

                                  Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)        'Funziona
                                    Static rPrevCell As Range
                                    
                                    If Not rPrevCell Is Nothing Then
                                      With rPrevCell.FormatConditions
                                        If .Count > 0 Then .Item(1).Delete
                                      End With
                                    End If
                                    With Target(1, 1).FormatConditions.Add(xlCellValue, xlEqual, Formula1:=Target(1, 1))
                                      .Priority = 1
                                      .Interior.ColorIndex = 36
                                    End With
                                    Set rPrevCell = Target(1, 1)
                                  End Sub
                                  

                                  Notare la riga .Priority = 1 che mette in "primo piano" la nuova regola, che diventerà l'item(1).

                                  Il codice andrebbe integrato ad esempio memorizzando la rPrevCell in un named range in modo da non perderlo quando si chiude il file o in caso debba funzionare su più fogli, anzi sarebbe meglio comuqne usare proprio un named range al posto della variabile static.

                                   

                                  #42197 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    scossa ha scritto:

                                    semplicemente aggiungiamo una nuova regola che imposti lo sfondo alla cella selezionata e la elimini quando viene "deselezionata"

                                    Le cose più semplici e ovvie sono anche le più eleganti.

                                    +1

                                    #42206 Score: 0 | Risposta

                                    BOLDOS75
                                    Partecipante

                                      Ok funziona perfettamente come volevo, ringrazio e chiudo la discussione. 

                                    Login Registrati
                                    Stai vedendo 17 articoli - dal 1 a 17 (di 17 totali)
                                    Rispondi a: Coloro cella attiva
                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                    Le tue informazioni: