Adicione comentários dinâmicos às células do Excel via VBA

0

Estou tentando usar comentários para mostrar a data de vencimento atual de uma tarefa por meio de uma macro VBA. Minha solução atual é assim:

Sub AddDueDates()
Dim strPrefix As String
  strPrefix = ""
  With Range("Target")
If .Comment Is Nothing Then
   .AddComment
End If
.Comment.Visible = True
.Comment.Shape.TextFrame.AutoSize = True
  End With

 With Range("Target").Comment
.Text strPrefix & Range("Source").Text 
End With
End Sub

Estou muito ciente de que isso provavelmente é um código malfeito, mas estou apenas começando de novo.

A solução até agora funciona bem para uma única célula. Eu nomeei as células "Target" e "Source" de antemão em vez de usar referências de célula como "B12". Agora quero estender isso para várias células, dependendo do intervalo que eu selecionar previamente (por exemplo, A1: A6).

A seleção onde os comentários serão adicionados corresponderá a um intervalo de tamanho igual em uma planilha diferente.

Sinto que um loop será útil, mas não sei por onde começar.

A imagem abaixo pode ilustrar o que eu quero fazer. A fonte está cheia de datas dinâmicas que eu quero adicionar aos meus comentários

link

obrigado antecipadamente

    
por James 10.10.2018 / 16:25

1 resposta

0

Isso deve começar. Isso funciona com sua foto de amostra - mas precisará de ajustes se a fonte de comentários for uma planilha diferente.

Sub AddDates()
Dim targetRng As Range, commentSrcRng As Range
Dim strPrefix As String ' why this variable? You never seem to use it

Set targetRng = Application.InputBox("Please select the target range.  This is the range that will have comments added to each cell", Type:=8)
Set commentSrcRng = targetRng.Offset(0, 3) ' from the screenshot. Will have to tweak if this is a different worksheet.

Dim cel As Range
Dim i As Long
i = 1
For Each cel In targetRng
    If cel.Comment Is Nothing Then
        cel.AddComment
    End If
    cel.Comment.Visible = True
    cel.Comment.Shape.TextFrame.AutoSize = True
    cel.Comment.Text strPrefix & commentSrcRng.Cells(i)
    i = i + 1
Next cel

End Sub

    
por 10.10.2018 / 17:37