Formattazione condizionale

di il
39 risposte

Formattazione condizionale

Buongiorno a tutti, ho un quesito da porvi:

Ho una maschera immissione dati collegata ad una tabella contenente un campo chiamato 1AVV impostato in data/ora, vorrei che nella visualizzazione normale della maschera nel campo 1AVV se inserisco una data e tale data fa parte della settimana corrente (lunedì-domenica) tale campo si deve colorare con lo sfondo verde.

Spero di essere stato chiaro e che soprattutto ci sia una soluzione al mio quesito.

39 Risposte

  • Re: Formattazione condizionale

    Ti fai una funzione che cambia il BackColor della textbox indriminata, quando il testo e' una data e all'interno la settimana corrente, supponiamo si chiami CambiaColoreSfondoDellaMiaTextboxConDataSettimana

    Poi richiami   CambiaColoreSfondoDellaMiaTextboxConDataSettimana()   sugli eventi Form/Current  e  txtData/AfterUpdate

    Oppure fai una funzione SiamoAdessoForseNellaSettimanaCorrente() as boolean    e poi la usi nella formattazione condizionale della textbox

    Se vuoi puoi usare anche nomi meno belli

  • Re: Formattazione condizionale

    Grazie della risposta, sicuramente pensavo che bastava una semplice regola di Formattazione perché per quello che mi hai suggerito tu devo capire prima come fare a meno che tu non riesci a dirmi direttamente cosa devo scrivere nella funzione 

  • Re: Formattazione condizionale

    Devi scrivere il codice in grado di :

    - trasformare la data corrente in valore numerico

    - trovare la data del lunedi immediatamente precedente alla data corrente, trasformarla in valore numerico

    - trovare la data della domenica immediatamente successiva alla data corrente, trasformarla in vaore numerico

    - verificare se la data corente (il valore numerico) e' interno all'intervallo corrente lunedi/domenica

    DateSerial, DateDiff, DateAdd e' grossomodo quel che ti serve

    Cerca 'vba operazione con le date' e facci sapere cosa ne vien fuori

  • Re: Formattazione condizionale

    18/11/2025 - Vitoia ha scritto:

    Grazie della risposta, sicuramente pensavo che bastava una semplice regola di Formattazione perché per quello che mi hai suggerito tu devo capire prima come fare a meno che tu non riesci a dirmi direttamente cosa devo scrivere nella funzione 

    Se sei in maschere CONTINUE è obbligatorio usare la F.C. non puoi da codice, ed in questo caso(Maschere continue) basta usare come Condizione o Criterio:

    DATEPART("ww",ControlloConTuaData)=DATEPART("ww",Date())

    Attenzione a dove scrivi la formula, in quanto a seconda, il traduttore richiede il [;] al posto della [,] ed al posto di [ww] si usa [ii].

    Se invece usi maschera singola, come ti hanno suggerito si può gestire al meglio su Current di Maschera e/o su AfterUpdate del controllo gestire il colore in quanto la F.C. risulta meno flessibile, questo ovviamente per condizioni complesse o quando i criteri dovessero essere molti.

    P.S. leggi questo articolo in relazione alla deterinazione della Settimana con DatePart:

    https://support.microsoft.com/en-us/office/datepart-function-26868a79-5505-4e5a-8905-6001372223fa?ui=en-us&rs=en-us&ad=us

  • Re: Formattazione condizionale

    Alex innanzitutto grazie della risposta, ma mi viene un dubbio nel caso mio che ho nel campo 1AVV la data che devo controllare se ricade nella settimana corrente e in quel caso si dovrà colorare di verde, la formula è quella che mi hai indicato o devo cambiare qualcosa?

  • Re: Formattazione condizionale

    Ti ho dato tutte le indicazioni per capire ora datti da fare e prova.

  • Re: Formattazione condizionale

    Grazie Alex ti terrò aggiornato 

  • Re: Formattazione condizionale

    Buongiorno Alex ho fatto varie prove ma non ho ottenuto il risultato sperato 

    DatePart(“ii”;”1AVV”=DatePart(“ii”;Date())

  • Re: Formattazione condizionale

    Alex risolto, l’unico problema mi calcola la settimana domenica/lunedì e a me servirebbe lunedì/domenica o meglio ancora lunedì/sabato

  • Re: Formattazione condizionale

    Leggi la guida relativamente all'uso della funzione DATEPART... scoprirai che ha dei parametri utili.

    Ovviamente la settimana da calendario è di 7gg non 6 se vorrai definire un senso personalizzato di settimana "lavorativa" dovrai scriverti una funzione personalizzata, ma fossi in te ci rifletterei.

  • Re: Formattazione condizionale

    Alex infatti non voglio fare la settimana di 6 giorni ma solo che il sistema mi da come primo giorno la domenica e settimo giorno il sabato e a me servirebbe primo giorno lunedì e settimo giorno domenica 

  • Re: Formattazione condizionale

    No non hai letto la guida...

    Ripeto la settimana non può essere 6gg da sistema, ma il calcolo del primo gg lo puoi personalizzare LEGGI LA GUIDA.

  • Re: Formattazione condizionale

    Ciao Alex ho letto la guida, ho visto che devo impostare il valore 1 nella mia formula ma nonostante i tentativi non sono riuscito a trovare dove collocare il valore nella mia formula

    DatePart(ii;[1AVV])<>DatePart(ii;Date())

  • Re: Formattazione condizionale

    Scusa ma sei sicuro di avere letto la guida? Perche' e' spiegato anche abbastanza bene qui:

    https://support.microsoft.com/it-it/topic/funzione-datepart-26868a79-5505-4e5a-8905-6001372223fa

    DatePart ( intervallo, data [, primogiornosettimana] [, primasettimanaanno] )

    Quindi nel tuo caso dovrai inserire il numero 2 dopo la formula della data anteponendo la virgola se lo usi in VBA o il punto e virgola se lo usi con il generatore di espressioni.

    Attenzione alle note della guida perche' in alcuni casi la settimana che inizia di lunedi' puo' restituire valori errati.

Devi accedere o registrarti per scrivere nel forum
39 risposte