как извлечь содержимое из комментария в ячейку в EXCEL VBA?

#excel #vba

Вопрос:

 Sub CommentToCell()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    Rng.Value = Rng.NoteText
Next
End Sub
 

Это мой код VBA. но это делает пустым, если ячейка не получает подтверждения.

Например, я использую эту функцию для в приведенной ниже ячейке.

 1 1 1 0(comments) 1
 

Это становится

 blank blank blank comments blank
 

Я хочу получить

 1 1 1 comments 1
 

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

1. Может быть, я бы проверил len(Rng.NoteText) ?

2. @Nathan_Sav Нет.. Я не хочу получать длину. Я хочу, чтобы ячейки без комментариев сохраняли свои исходные значения.

3. Да, так что, как я уже сказал, я бы проверил, тогда длина >0

Ответ №1:

 Sub CommentToCell()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
If Rng.Comment Is Nothing Then
    Rng.Value = Rng.Value
    Else
    Rng.Value = Rng.NoteText
    End If
Next
End Sub
 

Ответ оказался проще, чем я думал, и мне просто нужно было проверить заявление IF, чтобы узнать, есть ли памятка. Это хорошо работает.

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

1. Я бы сократил «Если» до If Not Rng.Comment Is Nothing Then Rng.Value = Rng.NoteText

2. @FunThomas Хорошая работа

3. Или, возможно, использовать Rng.CommentThreaded is nothing в зависимости от типа используемого комментария (использовать Comment для заметок и CommentThreaded комментариев).

4. Молодец, Юн!!!