gestione commenti celle



  • gestione commenti celle
    di Textomb data: 01/11/2013 13:06:12

    Salve a Tutti.
    ho una domanda per Voi.
    Ipotizziamo, in una cella del foglio di lavoro, di inserire un commento con la seguente semplice istruzione
    [F1].addcomment.text "Viva il Calcio"
    poi, successivamente, la modifichiamo
    [F1].comment.text "Viva tutti gli sports"

    Adesso il punto è questo.
    Devo conoscere in quale cella si trova il commento che ho inserito.
    Per cui scrivere quell'istruzione VBA che mi restituisce l'indirizzo F1

    sapreste darmi un'indicazione?
    grazie mille.



  • di Grograman data: 01/11/2013 14:27:25

    Un indizio perché sono di corsa
     
    Option Explicit
    
    Sub Commentiamo()
    Dim oCmt As Comment
    For Each oCmt In ActiveSheet.Comments
      Debug.Print oCmt.Parent.Address
    Next oCmt
    End Sub



  • di Textomb data: 01/11/2013 15:35:45

    Grazie mille.
    Avevo provato senza successo.
    In effetti nella finestra con le variabili locali, sotto Parent, non viene visualizzata la proprietà .Address. Che ero ciò che cercavo. Infatti mi ero perso.
    Alla fine ho utilizzato un codice alternativo che mi porta allo scopo desiderato.
    Ovviamente grazie per il suggerimento...

     
    Option Explicit
    
    Sub Commentiamo()
    Dim myRange As Range, cell As Range, v
    Set myRange = [F1:G10]
    For Each cell In myRange
        If Not cell.Comment Is Nothing Then
        v = Array(cell.Comment.Text, cell.Address)
        Debug.Print "Commento "; v(0) & "Indirizzo "; v(1)
        End If
    NextEnd Sub



  • di Textomb data: 01/11/2013 15:38:24

    Per me va bene così!



  • di Grograman data: 01/11/2013 16:51:16

    Nulla da dire sulla funzionalità del codice, ma ciclare tutte le celle (li hai un range piccolo, ma 5000 righe per 50 colonne?) mi sembra un po' esagerato



  • di Vecchio Frac data: 04/11/2013 10:19:43

    Aggiungo una mia coppia di funzioni utili quando si trattano i commenti.
    Peccato che sono arrivato così tardi nella discussione, il mio pc è ancora in assistenza :(
     
    Function Commento(r As Range) As String
    Application.Volatile True
        Commento = "<" & r.Address & ": nessun commento inserito>"
        If HasComment(r) Then
            If Trim(r.Comment.Text) = "" Then
                Commento = "<" & r.Address & ": commento vuoto>"
            Else
                Commento = "<" & r.Address & ": " & r.Comment.Text
            End If
        End If
    End Function
    
    Private Function HasComment(r As Range) As Boolean
       HasComment = Not (r.Comment Is Nothing)
    End Function