Я хочу написать Модуль или Саб в 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
Буду признателен, если кто-нибудь мне поможет. Заранее спасибо.
@Storax - Спасибо за ваш ответ, но он действительно не ответил на мой вопрос. Моя точная проблема заключается в доступе к разделу комментариев ячейки и изменении его на основе значения другой ячейки.
Судя по картинке в посте, вы поместили функцию GetComment
в ячейку B2, и я предполагаю, что вы ожидаете, что на основе значения в F2 комментарий в B2 изменится соответствующим образом. Другими словами, для этого вы используете UDF, верно?
@Storax - да, я ожидаю того же, что и вы, я вручную изменил комментарий к ячейке B2, чтобы лучше показать свою цель. на самом деле Функция в ячейке B2 не работает.
Если вы не используете 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 в таком случае.
Ваше решение работает правильно, большое спасибо.
Отвечает ли это на ваш вопрос? Использование UDF в Excel для обновления рабочего листа