У меня есть задача добавить комментарий в итоговую сумму по месяцам, чтобы показать задействованные элементы и сумму. Хочу упростить работу, т.к. делаю это ежемесячно и каждую работу (более 20 работ)!
Я нашел решения для одной ячейки.
Мне нужно добавить связанные значения ячеек в один комментарий за месяц.
Option Explicit
Sub CreateComment()
Dim rng As Range
Dim cel As Range
Dim myColumn, myRow As Integer
Set rng = Selection
myColumn = ActiveCell.Column
myRow = ActiveCell.Row
For Each cel In rng
If cel.Value <> "" Then
Range("myColumn" & "1").AddComment [Cell("myRow", "1")).Value & " -$" & Cell("myRow","myColumn")_.value]
End If
Next
End Sub
Option Explicit
Sub AddComments()
Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim lCol As Long: lCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
Dim srg As Range: Set srg = ws.Range("A1").Resize(lRow, lCol)
Dim Data As Variant: Data = srg.Value
Dim r As Long, c As Long, n As Long
Dim Comm As String
For c = 2 To lCol
For r = 4 To lRow
If Len(Data(r, c)) > 0 Then
n = n + 1
Comm = Comm & n & ". " & Data(r, 1) & " - " _
& Format(Data(r, c), "$#,##0") & vbLf
End If
Next r
If n > 0 Then
With srg.Cells(1, c)
.ClearComments
.AddComment Left(Comm, Len(Comm) - 1)
End With
n = 0
Comm = ""
End If
Next c
MsgBox "Comments added.", vbInformation
End Sub
srg.Cells(1, c).ClearComments: srg.Cells(1, c).AddComment Left(Comm, Len(Comm) - 1)
, который охватывает ячейки от B1
до LastCol1
(For c = 2 to lCol
). 2.)If Len(Data(r, c)) > 0 Then
означает что если значение (в текущей строке текущего столбца) найдено, то. Если значение для текущего столбца не найдено, то n = 0
поэтому комментарий не будет добавлен, даже если у вас есть заголовок в этом столбце: n
подсчитывает количество строк (на столбец), в которых есть запись.
Спасибо!!! это то что мне нужно!! Но почему для добавления комментария не нужно указывать ячейку? Кроме того, что означает, если n > 0, то...... извините за вопрос новичка...