[英]VBA Dynamic Comment Creation
我正在嘗試使用VBA改進Excel中的GANTT圖表。 現在,我僅使用條件格式,但是我需要在注釋框中顯示項目付款的值,日期和狀態,該注釋框中的內容將來自工作簿中的三個不同工作表:Estudos,Projetos和Obras。
付款日期在GANTT圖表中顯示為紅色。 如果付款在第4 + 3 * i行,則源為Estudos,如果付款在第5 + 3 * i行,則源為Projetos,如果付款在6 + 3 * i行,則源為Obras。
我的想法是使用三種不同的矩陣在所有紅細胞之間循環,每個工作表源使用一個矩陣,但是由於我是VBA編程的新手,所以我似乎無法使其正常工作。 語法和對象非常具體。
請幫我!
上面是Estudos工作表的圖片,注釋將在其中提取其值。 我需要寫在GANTT圖表中特定紅色單元格內顯示的每個付款的日期和值。
到目前為止,這就是我所要做的,是將通用的“數據”文本插入每個紅色單元格的注釋框中。
Sub AtualizaComent()
' variaveis
Dim rng1 As Range
Dim celula As Range
Dim estudos As Range
Dim projetos As Range
Dim obras As Range
Dim etapa As String
Dim data As String
Dim valor As String
Dim i, j, k, l, m, n As Integer
' inicializaçao
Set rng1 = Range("T4:APV726")
Set estudos = Worksheets("Operacional - Pag Estudos").Cells(4, 8)
Set projetos = Worksheets("Operacional - Pag Projetos").Cells(4, 8)
Set obras = Worksheets("Operacional - Pag Obras").Cells(4, 8)
i = 0
j = 0
k = 0
l = 0
m = 0
n = 0
' limpa todos os comentarios
rng1.ClearComments
' para cada celula no gantt
For Each celula In rng1
' valido se a celula for vermelha (data do pagamento)
If celula.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
' If celula.Row = 4 + 3 * i Then
' adiciona o comentario
With celula.AddComment
.Text Text:="data"
End With
End If
Next celula
End Sub
我做的! 這是我使用的代碼。
Sub AtualizaComent()
' variaveis
Dim gantt As Range
Dim linha As Range
Dim celula As Range
Dim data As Range
Dim valor As Range
Dim etapa As Range
Dim i, j, k, l, m, n As Integer
' inicializaçao
Set gantt = Range("T4:APV726")
i = 0
j = 0
k = 0
l = 0
m = 0
n = 0
' limpa todos os comentarios
gantt.ClearComments
' para cada linha no gantt
For Each linha In gantt.Rows
If linha.Row = 4 + 3 * i Then
' para cada celula na linha
For Each celula In linha.Cells
' valido se a celula for vermelha (data do pagamento)
If celula.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
' celulas que contem as datas, valores e etapa
Set data = Worksheets("Operacional - Pag Estudos").Cells(4 + 3 * i, 8 + 2 * j)
Set valor = Worksheets("Operacional - Pag Estudos").Cells(5 + 3 * i, 8 + 2 * j)
Set etapa = Worksheets("Operacional - Pag Estudos").Cells(6 + 3 * i, 8 + 2 * j)
' adiciona o comentário
With celula.AddComment
.Text Text:=data.Text & _
Chr(10) & valor.Text & _
Chr(10) & etapa.Text
End With
j = j + 1
End If
Next celula
i = i + 1
j = 0
End If
Next linha
For Each linha In gantt.Rows
If linha.Row = 5 + 3 * k Then
For Each celula In linha.Cells
If celula.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
Set data = Worksheets("Operacional - Pag Projetos").Cells(4 + 3 * k, 8 + 2 * l)
Set valor = Worksheets("Operacional - Pag Projetos").Cells(5 + 3 * k, 8 + 2 * l)
Set etapa = Worksheets("Operacional - Pag Projetos").Cells(6 + 3 * k, 8 + 2 * l)
With celula.AddComment
.Text Text:=data.Text & _
Chr(10) & valor.Text & _
Chr(10) & etapa.Text
End With
l = l + 1
End If
Next celula
k = k + 1
l = 0
End If
Next linha
For Each linha In gantt.Rows
If linha.Row = 6 + 3 * m Then
For Each celula In linha.Cells
If celula.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
Set data = Worksheets("Operacional - Pag Obras").Cells(4 + 3 * m, 8 + 2 * n)
Set valor = Worksheets("Operacional - Pag Obras").Cells(5 + 3 * m, 8 + 2 * n)
Set etapa = Worksheets("Operacional - Pag Obras").Cells(6 + 3 * m, 8 + 2 * n)
With celula.AddComment
.Text Text:=data.Text & _
Chr(10) & valor.Text & _
Chr(10) & etapa.Text
End With
n = n + 1
End If
Next celula
m = m + 1
n = 0
End If
Next linha
End Sub
謝謝@Nathan_Sav的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.