Condividi tramite

aggiunta commento automatico in cella di excel

Anonimo
2016-03-24T11:16:59+00:00

Buongiorno, non so se la mia domanda può risultare curiosa ma qui nella community ho sempre trovato persone competenti quindi vado tranquillo...

per gestire una matrice turni con aggiunta delle festività in calendario, ho utilizzato sulla matrice in mio possesso una formattazione condizionale, sinceramente essendo a digiuno di formule di questo tipo, ho utilizzato una formula tratta da alcuni file di esempio e anche se non ne ho capito completamente il senso, sembra comunque funzionare per quella che è la mia esigenza:

=NON(VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0)))

ho creato un foglio a parte in cui ho inserito le date che voglio formattare ma se qualcuno mi fa anche la gentilezza di spiegarmi il significato della stringa sopra ne sarei contento in modo da usarla con più dimestichezza in futuro... :)

A parte questo la mia reale domanda è un'altra:

dopo questa formattazione mi servirebbe un modo per indicare sulla specifica data di che evento si tratti, e quindi ho immaginato che si possa utilizzare una funzione (o macro) che ...se è presente quella data ad esempio 01/01/2017, mi aggiunga un commento automatico con l'indicazione "primo dell'anno" oppure che mi possa popolare una cella da me definita con tale indicazione, per me sarebbe lo stesso.

Spero di essere stato chiaro, ma se vi sarà bisogno di delucidazioni sono a disposizione.

Grazie mille in anticipo.

VL

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2016-03-25T09:55:52+00:00

    buongiorno Norman,

    anzitutto grazie della velocita' di risposta e disponibilità, allora h oprovato il codice ma ovviamente c'e' qualche cosa che va storto:

    intanto ti confermo che l'elenco delle mie festività è in un foglio a parte e affianco alla data ho scritto il nome dell'evento come mi hai indicato, adesso dopo aver salvato il tutto come xlsm non trovo il codice funzionante.

    La mia matrice è quella in allegato...

    Mi viene un dubbio: la mia formula contiene il nome feste perché ripreso da altro file di esempio ma il foglio si chiama FEST, non l'ho cambiato perché funziona lo stesso ma potrebbe essere un problema all'interno del codice che mi hai inviato? ho comunque provato a rinominare il foglio in FESTE ma cnon funziona lo stesso...

    Il codice va forse modificato nel caso in cui la matrice è su altro foglio?

    Grazie ancora :)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-24T14:41:43+00:00

    Ciao Valerio,

    Buongiorno, non so se la mia domanda può risultare curiosa ma qui nella community ho sempre trovato persone competenti quindi vado tranquillo...

    per gestire una matrice turni con aggiunta delle festività in calendario, ho utilizzato sulla matrice in mio possesso una formattazione condizionale, sinceramente essendo a digiuno di formule di questo tipo, ho utilizzato una formula tratta da alcuni file di esempio e anche se non ne ho capito completamente il senso, sembra comunque funzionare per quella che è la mia esigenza:

    =NON(VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0)))

    La formula 

    CERCA.VERT(H$4;FESTE;1;0)

    Nel caso che il valore della cella H4 non fosse compresa nell'intervallo noninato Feste, questa formula restituirebbe il risultato # N/D e la formula 

    VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0))

    restituirebbe il risultato VERO. Quindi la formula intera

    =NON(VAL.NON.DISP(CERCA.VERT(H$4;FESTE;1;0)))

    restituirebbe FALSO se la data non fosse una festa oppure VERO se  la data fosse una festa. Pertanto. la formula può eaasere utilizzata  per la formattione condizionale per evidenziare le feste.

    ho creato un foglio a parte in cui ho inserito le date che voglio formattare ma se qualcuno mi fa anche la gentilezza di spiegarmi il significato della stringa sopra ne sarei contento in modo da usarla con più dimestichezza in futuro... :)

    A parte questo la mia reale domanda è un'altra:

    dopo questa formattazione mi servirebbe un modo per indicare sulla specifica data di che evento si tratti, e quindi ho immaginato che si possa utilizzare una funzione (o macro) che ...se è presente quella data ad esempio 01/01/2017, mi aggiunga un commento automatico con l'indicazione "primo dell'anno" oppure che mi possa popolare una cella da me definita con tale indicazione, per me sarebbe lo stesso.

    Spero di essere stato chiaro, ma se vi sarà bisogno di delucidazioni sono a disposizione. 

    Ipotizzo che accanto alle date nell'intervallo Feste ci siano le desrcizione volute come, ad esempio:

    In tal caso, prova quanto segue:

    • Fai clic dx sulla linguetta del foglio
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim Rng As Range, rngFeste As Range, rCell As Range

        Dim Res As Variant

        Dim aName As Name

        Dim arrFeste As Variant

        Dim myComment As Comment

        Dim sStr As String

        Dim i As Long

        Dim bFesta As Boolean

        Const myCell As String = "H4:J4"

        Set aName = ThisWorkbook.Names("Feste")

        Set rngFeste = aName.RefersToRange

        arrFeste = Application.Transpose(rngFeste.Value)

        Set Rng = Intersect(Me.Range(myCell), Target)

        If Not Rng Is Nothing Then

            For Each rCell In Rng.Cells

                With rCell

                    On Error Resume Next

                    .Comment.Delete

                    On Error GoTo 0

                    For i = LBound(arrFeste) To UBound(arrFeste)

                        bFesta = CDate(arrFeste(i)) = rCell.Value

                        If bFesta Then

                            sStr = rngFeste.Cells(i).Offset(0, 1).Value

                            Set myComment = .AddComment

                            myComment.Text Text:=sStr

                            Exit For

                        End If

                    Next i

                End With

            Next rCell

        End If

    End Sub

    '<<=========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm.

    Potresti scaricare il mio file di prova Valerio20160324.xlsm a:

    https://www.dropbox.com/s/1t1le0j1g1o7qon/Valerioi20160324.xlsm?dl=0

    Per quanto riguarda il mio file di prova, l'intervallo Feste potrebbe anche esssere su su un altro foglio del file

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento