commenti automatici cella



  • commenti automatici cella
    di chris (utente non iscritto) data: 21/09/2015 15:10:08

    buongiorno a tutti e complimenti
    ho cercato qua e la ma non ho trovato soluzione al mio quesito.
    Esiste la possibilità che al momento della scrittura in una cella , qualsiasi oppure in un range ,venga inserito automaticamente un commento contenente la data di modifica ?
    se non possibile sarebbe anche utile comunque che la cella a fianco (es.:B2) di quella che viene modificata (es.:A2) memorizzasse la sua data di modifica.
    in questo modo riuscirei in modo molto pratico a lasciar una traccia degli aggiornamenti ad un file gestionale .



  • di Albatros54 data: 21/09/2015 15:44:07

    prova li codice sotto, che deve essere incollato sul fogliodove tu vuoi aggiungere i commenti , con l'evento CHANGE,l'evento scaturisce quando vai a modificare una cella della colonna A. Adattalo alle tue esigenze.
    Ciao
    Albatros54
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Set rng = Range("a:a")
        With Target
            If Not Intersect(rng, .Cells) Is Nothing Then
    
                With Target.AddComment
                    .Text "modificato " & Date
                    .Visible = False
                End With
            End If
        End With
    
    End Sub
    






  • di chris (utente non iscritto) data: 21/09/2015 15:58:38

    funziona,
    complimenti sei bravissimo ;)



  • di chris (utente non iscritto) data: 21/09/2015 16:03:59

    solo un dettaglio ,
    dopo aver applicato il codice se su una cella cancello il contenuto mi va in errore.
    risolvibile ?
    grassie di nuovo



  • di Albatros54 data: 21/09/2015 16:22:21

    Occhio, il codice postato sotto, non va in errore se tu vai a cancellare una cella che contiene un commento.
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Set rng = Range("a:a")
        With Target
            If Not Intersect(rng, .Cells) Is Nothing Then
                If Target.Value = "" Then
                    Target.Comment.Delete
                Else
                    With Target.AddComment
                        .Text "modificato " & Now
                        .Visible = False
                    End With
                End If
            End If
        End With
    
    End Sub
    
    






  • di chris (utente non iscritto) data: 21/09/2015 16:33:02

    perfetto ,
    vedi una soluzione anche per ovviare a ciò e quindi poter premere accidentalmente il tasto CANC su qualsiasi cella ? e lasciando perciò il commento aggiornato con la data di cancellazione ?
    grazie 1000



  • di Albatros54 data: 21/09/2015 17:40:32

    Prova cosi 
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rng As Range
        Set rng = Range("a:a")
        With Target
            If Not Intersect(rng, .Cells) Is Nothing Then
                If Target.Value = "" Then
                    Target.ClearComments
                    Target.AddComment.Text " cancellato" & Now
                    Target.Comment.Visible = False
                Else
                    Target.ClearComments
                    With Target.AddComment
    
                        .Text "modificato " & Now
                        .Visible = False
                    End With
                End If
            End If
        End With
    
    End Sub
    






  • di chris (utente non iscritto) data: 22/09/2015 11:24:26

    molto bene , funziona, l'unica cosa è che il commento non si aggiorna alla successiva modifica della cella ma mantiene la data della prima modifica.
    grazie cmq sei disponibilissimo



  • di chris (utente non iscritto) data: 22/09/2015 11:29:59

    ops errore mio ! funziona alla grande !! non avevo modificato il range :D :D :D
    bravissimo complimenti



  • di scossa data: 22/09/2015 11:45:41

    Mi permetto di suggerire una leggera "complicazione" per rendere il codice più solido ed elastico.
    Cioè per funzionare anche quando il Target non è di una sola cella. Infatti se si dovessero modificare contemporaneamente più celle (con ctrl+invio) o si dovesse copiare un intervallo di più celle, il codice attuale andrebbe in errore, mentre con la modifica proposta funzionerebbe correttamente.

    @Albatros54: hai usato With Target ma poi non l'hai sfruttato solo in una istruzione.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.
    (George Bernard Shaw)

     
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim cella As Range
      Set Target = Intersect(Me.Range("A:A"), Target)
      If Not Target Is Nothing Then
        For Each cella In Target
          With cella
            If .Value = "" Then
                .ClearComments
                .AddComment.Text " cancellato " & Now
                .Comment.Visible = False
            Else
                .ClearComments
                With .AddComment
                    .Text "modificato " & Now
                    .Visible = False
                End With
            End If
          End With
        Next cella
      End If
    End Sub
    



  • di chris (utente non iscritto) data: 22/09/2015 11:55:01

    ottimo ,
    la ciliegina sulla torta è ora perfetta ;)