Excel VBA читать комментарий к ячейке - PullRequest
0 голосов
/ 19 марта 2020

Я работаю над кодом, чтобы проверить, содержит ли ячейка Excel указанный c многопоточный комментарий,

Я не могу понять, почему первый код выдает ошибку

«Переменная объекта или переменная блока не установлена»

Sub test()
    Dim R As Range
    Set R = Range("E10:E205")

    For Each R In R.Cells
        If R.CommentThreaded.Text = "3" Then
                MsgBox (R.Address)
        End If
    Next R
End Sub

, пока этот код работает нормально:

Sub test()
    Dim R As Range
    Set R = Range("E10:E205")

    For Each R In R.Cells
        If Not R.CommentThreaded Is Nothing Then
            If R.CommentThreaded.Text = "3" Then
                MsgBox (R.Address)
            End If
        End If
    Next R
End Sub

1 Ответ

1 голос
/ 19 марта 2020

Если ячейка R не имеет CommentThreaded объекта. Тогда, конечно же, несуществующее R.CommentThreaded не может иметь свойство .Text.

Именно поэтому вам сначала нужно проверить, содержит ли R.CommentThreaded какой-либо объект комментария

If Not R.CommentThreaded Is Nothing Then

вы можете использовать его .Text свойство.


Выключено topi c:

В MsgBox (R.Address) вы должны удалить скобку MsgBox R.Address, если вы действительно не хотите отказаться от отправки аргумент ByRef для его передачи ByVal.

Answer = MsgBox(R.Address)   'parentheses needed because = is used
Call MsgBox(R.Address)       'parentheses needed because 'Call' is used
MsgBox R.Address             'don't use perenthesis without =

, но здесь скобка делает что-то совершенно другое (обратите внимание на дополнительный пробел!):

MsgBox (R.Address)            'parenthesis here force ByVal!
      ^
      | Extra space!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...