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

#excel #vba

#excel #vba

Вопрос:

Я пытаюсь превратить текстовое содержимое одной ячейки в комментарий к этой ячейке, а затем настроить автоматический размер комментария, чтобы он соответствовал истинному размеру содержимого. Я нашел два отдельных макроса, которые работают, но у меня возникли проблемы с объединением их в один макрос.

Приведенный ниже код работает путем преобразования выбранной ячейки в комментарий. https://sumtips.com/tips-n-tricks/convert-excel-cell-contents-comments-vba /

 Sub ConvertToComment()
Dim C As Range
For Each C In Selection
    C.ClearComments
    If Len(C.Value) > 0 Then
        C.AddComment
        C.COMMENT.Text C.Value amp; ""
    End If
    'Optional: Delete cell content after converting
    C = "See Comment"
    Next C
End Sub
  

Приведенный ниже код позволяет автоматически изменять размер всех комментариев на листе.
https://quadexcel.com/how-to-auto-size-comment-box-to-fit-its-content-in-excel /

 Sub FitComments()
Dim xComment As Comment
For Each xComment In Application.ActiveSheet.Comments
xComment.Shape.TextFrame.AutoSize = True
Next
End Sub
  

Как я могу включить приведенную ниже строку в макрос ConvertToComment () вверху?

 xComment.Shape.TextFrame.AutoSize = True
  

Приведенный ниже код — это моя печальная попытка добавить строку, которую я считаю важной, чтобы заставить ее работать так, как я хочу. Создайте комментарий и автоматически измените размер созданного комментария в соответствии с содержимым. Я все еще новичок в VBA.

 Sub ConvertToComment()
Dim C As Range
Dim xComment As COMMENT
For Each C In Selection
    C.ClearComments
    If Len(C.Value) > 0 Then
        C.AddComment
        C.COMMENT.Text C.Value amp; ""
  -->   COMMENT.Text C.Shape.TextFrame.AutoSize = True
    End If
    'Optional: Delete cell content after converting
    C = "See Comment"
    Next C
End Sub
  

Сообщение об ошибке «Объект не поддерживает этот проект или метод»

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

1. В одной строке находятся два оператора. Попробуйте просто C.Shape.TextFrame.AutoSize = True

2. Спасибо за ответ. Я только что попробовал эту строку вместо моей предыдущей неправильной строки. Это выдало ошибку 438. «Объект не поддерживает это свойство или метод». Итак, я добавил C.COMMENT.Shape.TextFrame.AutoSize = True , и это сработало. Большое вам спасибо.