excel vba вставить комментарий к ячейке с ключевым словом

#excel #vba #comments

#excel #vba #Комментарии

Вопрос:

даже не уверен, как задать этот вопрос. у меня есть график обслуживания Excel (лист 1). настройка с оборудованием в столбце A (заморожена) и датами в строке 1. когда я включаю действия по обслуживанию в расписание, мне часто нужно добавлять комментарии.
на втором листе действия по обслуживанию возрастают. вот несколько столбцов: дата, основное действие и количество работников. некоторые столбцы на листе 2 содержат информацию, которую я вручную ввожу на листе 1 (расписание) в качестве комментариев, количество работников — это то, что я всегда добавляю в комментарий. это значительно сэкономило бы время, если бы мне не нужно было вводить все это. что я хотел бы создать: на листе 2 указана дата, когда будет выполнено основное действие, на листе 1 даты указаны сверху. я хотел бы, чтобы макрос находил столбец даты на листе 1, который соответствует дате на листе 2, затем находил строку на листе 1, которая соответствует идентификатору оборудования в листе 2 для этого основного действия. затем комментарий может быть просто скомпилирован как строка из этой информации о строках в sheet2 и записан как комментарий на sheet1.

примерно так. нажмите кнопку на листе 2. он находит ячейку на листе 1, которая совпадает со столбцом даты и строкой equipmentID. компилирует комментарий из ячеек листа 2 b3, b4, b5. вставляет комментарий в найденную ячейку на листе 1. затем выполняется цикл для каждого действия maint на листе 2. вероятно, следует очистить все комментарии к найденным ячейкам перед вставкой новой.

у кого-нибудь есть какие-либо идеи по этому поводу? или, может быть, указать мне правильное направление? спасибо за любую помощь.

Комментарии:

1. Какая именно часть этого вызывает у вас проблемы? Перебираете строки в sheet2? Как найти ячейку на листе 1? Вы можете попробовать использовать Find() или Match() для определения местоположения. Опубликуйте свой код, если у вас возникнут проблемы.

2. Этот вопрос, похоже, не по теме, поскольку он не включает конкретную проблему и не содержит никакого кода для устранения неполадок.

3. у меня нет никакого кода. я надеялся на некоторую помощь в этом. и да, мне нужна помощь в коде для выполнения цикла и поиска ячейки.

Ответ №1:

спасибо за всю помощь!!! нашел несколько ответов в другом месте. если кому-то интересно, вот что я придумал.

 Sub setComment4Tour()

On Error GoTo hell

 Dim wrow As Range
 Dim id, AC As String
 Dim SearchRange As Range
 Dim wcol As Range
 Dim fdate As Date
 Dim fcell As Range

If Not Intersect(ActiveCell, Range("aa:aa")) Is Nothing Then 'check for current sheet activecell value in other sheet range
    If Range("A" amp; ActiveCell.row) <> "" And Range("C" amp; ActiveCell.row) <> "" Then 'check for values in current sheet col A amp; C
 id = ActiveCell.Value
 fdate = Range("C" amp; ActiveCell.row).Value

 'Find row ref
 Set wrow = Worksheets("WEEKLY").Range("a4:a13").Find(id, lookat:=xlPart)
 If Not wrow Is Nothing Then
 End If

 'Find column ref
 Set SearchRange = Worksheets("WEEKLY").Range("3:3")
 Set wcol = SearchRange.Find(fdate, LookIn:=xlValues, lookat:=xlWhole)
 Set fcell = Worksheets("WEEKLY").Cells(wrow.row, wcol.Column) 'combine row and column to get target cell

    If Not InStr(UCase(fcell), "TOUR") <> 0 Then
    mb1 = MsgBox("The WEEKLY does not have a tour scheduled for " amp; id amp; "." amp; Chr(10) amp; "Would you like to create the info comment for " amp; id amp; " anyway?", vbYesNo, " Tour Not Found!")
        If mb1 = vbYes Then
            GoTo updateComment 'Resume Next
        Else
            GoTo hell
        End If
    End If
'MsgBox "cell " amp; fcell.Address
updateComment:
'new comment based on current sheet info in the activecell row
newcmnt = Range("A" amp; ActiveCell.row).Value amp; Chr(10) amp; Range("D" amp; ActiveCell.row).Value amp; "-" amp; Range("E" amp; ActiveCell.row).Value amp; Chr(10) amp; "Adults " amp; Range("F" amp; ActiveCell.row).Value amp; Chr(10) amp; "Children " amp; Range("G" amp; ActiveCell.row).Value

    If fcell.Comment Is Nothing Then
        'Set ctext = Worksheets("WEEKLY").Cells(wrow.row, wcol.Column).Comment
        'fcell.Comment.Text Text:=atext
        fcell.AddComment Text:=newcmnt
        fcell.Comment.Shape.TextFrame.AutoSize = True
        MsgBox "comment added"
    ElseIf InStr(fcell.Comment.Text, Range("A" amp; ActiveCell.row).Value) <> 0 Then 'check if comment title already exists
        MsgBox "Tour " amp; Range("A" amp; ActiveCell.row).Value amp; "'s info comment already exists on the WEEKLY."
    Else 'ammend current comment with additional comment
        cmnt = fcell.Comment.Text
        newcmnt = cmnt amp; Chr(10) amp; Chr(10) amp; Range("A" amp; ActiveCell.row).Value amp; Chr(10) amp; Range("D" amp; ActiveCell.row).Value amp; "-" amp; Range("E" amp; ActiveCell.row).Value amp; Chr(10) amp; "Adults " amp; Range("F" amp; ActiveCell.row).Value amp; Chr(10) amp; "Children " amp; Range("G" amp; ActiveCell.row).Value
        fcell.Comment.Text Text:=newcmnt
        fcell.Comment.Shape.TextFrame.AutoSize = True
        MsgBox "comment added"
    End If

Else
    MsgBox "There is not a Tour or Date on this Row."
    GoTo hell
    End If
    Else
    MsgBox "Select the cell with the Aircraft that you would like to create a Comment for, and try again."
End If



    Exit Sub

hell:
    'MsgBox "No Comment"
End Sub
  

таким образом, в основном на листе 2 есть информация для комментария, который необходимо добавить в лист1. ячейка, для которой требуется комментарий на листе 1, неизвестна, ее необходимо найти. итак, я нахожу столбец на листе 1, который соответствует дате из листа 2, и то же самое для строки, которая соответствует идентификатору. итак, теперь, когда строка и столбец пересекаются, у меня есть ячейка на листе 1, к которой требуется добавить комментарий. затем я компилирую комментарий из активной строки на листе 2 и выполняю несколько проверок, чтобы убедиться, что комментарий еще не существует. надеюсь, это кому-то поможет.

если у кого-нибудь есть какие-либо данные о настройке моего кода или любых улучшениях, которые я могу внести, я был бы признателен за обратную связь. Спасибо.