Проверка резьбовых комментариев - PullRequest
0 голосов
/ 23 января 2019

Мой офис только что обновился до новой версии Office 365, и с ним появился новый способ получения комментариев. Старые комментарии теперь называются «заметками», а новые комментарии теперь называются «комментариями».

В одной из моих книг у меня есть кнопка, которая при нажатии просматривает определенные ячейки, чтобы проверить, есть ли комментарий или нет. Затем он закрасит ячейку в зависимости от того, что он находит.

(мой полный код кнопки указан ниже) Строка 9 содержит вопрос

В предыдущих версиях Excel эта кнопка работала просто отлично. Однако теперь он работает только в том случае, если в ячейках есть «заметки», и не работает, если в них есть «комментарии». В моем коде класс, который я использовал, назывался «Комментарий», поэтому мой код был чем-то вроде «If Cells (row, col). Comment Is Nothing ...». Этот класс все еще работает, но ищет только заметки. Я просмотрел библиотеку объектов и под скрытыми объектами обнаружил новый класс с именем «CommentThreaded». Я попытался изменить свой код на это («Если ячеек (строка, столбец). CommentThreaded ничего нет ...»), но это не работает. Когда я нажимаю кнопку, я получаю ошибку времени выполнения: ошибка приложения или объекта при попытке доступа к этому новому классу.

Кто-нибудь знает, что мне нужно изменить, чтобы моя кнопка работала с многопоточными комментариями?

Спасибо, Mike

Sub Comments()
Dim xrow As Integer
Dim xcol As Integer

For xrow = 7 To 88
    For xcol = 3 To 15
        If Cells(xrow, xcol).Value <= -0.1 Or Cells(xrow, xcol).Value >= 0.1 Then
            If Cells(5, xcol).Value = "MTD %" Or Cells(5, xcol).Value = "YTD %" Then
                If Not Cells(xrow, xcol).Comment Is Nothing Then
                    Cells(xrow, xcol).Interior.Color = RGB(155, 255, 188)
                Else
                    Cells(xrow, xcol).Interior.Color = RGB(255, 255, 0)
                End If
            End If
        End If
    Next xcol
Next xrow
End Sub

1 Ответ

0 голосов
/ 06 марта 2019

По состоянию на 15 мая 2019 года новый объект CommentThreaded описывается Microsoft .
В моей версии Excel 1906 он полностью поддерживается в VBA.

Предполагаемый If Range.CommentThreaded Is Nothing работает.

Вот код для игры:

Private Sub ExcelsNewCommentThreaded()
    Dim AllCommentsThreaded As Excel.CommentsThreaded
    Dim OneCommentThreaded As Excel.CommentThreaded
    Dim AllReplies As Excel.CommentsThreaded
    Dim OneReply As Excel.CommentThreaded
    Dim r As Range

    Set AllCommentsThreaded = ActiveSheet.CommentsThreaded

    ' loop over all threaded comments of a worksheet and get their info
    For Each OneCommentThreaded In AllCommentsThreaded
        With OneCommentThreaded
            Debug.Print .Author.Name, .Date, .Text
            For Each OneReply In .Replies
                With OneReply
                    Debug.Print .Author.Name, .Date, OneReply.Text
                End With
            Next OneReply
        End With
    Next OneCommentThreaded

    Set r = Selection.Cells(1)

    ' check if the selected cell already contains a threaded comment
    If r.CommentThreaded Is Nothing Then
        r.AddCommentThreaded ("my new comment")
    End If

    With r.CommentThreaded
        ' get text of comment
        Debug.Print .Text

        ' add some replies
        .AddReply ("my reply 1")
        .AddReply ("my reply 2")

        ' change text of comment
        Debug.Print .Text(Text:="text of comment changed")
        Debug.Print .Text

        ' change text of a reply
        .Replies(1).Text Text:="text of reply 1 changed"
        Debug.Print .Replies(1).Text

        ' delete second reply
        .Replies(2).Delete

        ' delete whole comment including its replies
        .Delete
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...