Добавление комментария в ячейку на основе значения другой ячейки

Я хочу написать Модуль или Саб в Excel, чтобы добавить комментарий в раздел комментариев ячейки на основе значения другой ячейки. Например: значение Ячейка F2 равно «Высокий уровень», и с помощью такой функции, как =GetComment(F2), раздел комментариев ячейка B2 изменен на «Высокий уровень».

Если значение F2 есть пустое, в раздел комментариев ячейка B2 следует добавить «Ничего».

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

Function GetComment(ByVal target As Range, rng As Range)
    If IsEmpty(rng.Value) Then
        target.AddComment ("Nothing")
    Else
        target.AddComment (rng.Value)
    End If
End Function

чтобы лучше объяснить, я захватил среду Excel, которую вы можете увидеть по ссылке ниже: https://s22.picofile.com/file/8448590268/IMG_20220324_WA0000.jpg

Буду признателен, если кто-нибудь мне поможет. Заранее спасибо.

Отвечает ли это на ваш вопрос? Использование UDF в Excel для обновления рабочего листа

Storax 08.04.2022 10:16

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

Mohammad Moradi 08.04.2022 13:35

Судя по картинке в посте, вы поместили функцию GetComment в ячейку B2, и я предполагаю, что вы ожидаете, что на основе значения в F2 комментарий в B2 изменится соответствующим образом. Другими словами, для этого вы используете UDF, верно?

Storax 08.04.2022 14:54

@Storax - да, я ожидаю того же, что и вы, я вручную изменил комментарий к ячейке B2, чтобы лучше показать свою цель. на самом деле Функция в ячейке B2 не работает.

Mohammad Moradi 08.04.2022 15:16
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
4
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы не используете UDF, вам нужно изменить свой код следующим образом.

Option Explicit

Function GetComment(ByVal target As Range, rng As Range)
    If IsEmpty(rng.Value) Then
        myCmt target, "Nothing"
        'target.AddComment ("Nothing")   <= This code will fail if a comment already exists
    Else
        myCmt target, rng.Value
        'target.AddComment (rng.Value)   <= This code will fail if a comment already exists
    End If
End Function

Function myCmt(rg As Range, cmt As String)
' This will add  the string cmt as a comment to the target
' and will delete any existing comment regardless
    
    ' Just delete any existing comment
    If Not rg.Comment Is Nothing Then
        rg.Comment.Delete
    End If
    rg.AddComment (cmt)

End Function


Sub TestIt()
    GetComment [B2], [F2]
End Sub

В этом сообщение вы найдете обходной путь, как использовать UDF в таком случае.

Ваше решение работает правильно, большое спасибо.

Mohammad Moradi 08.04.2022 15:44

Другие вопросы по теме