Все еще возникают проблемы с форматированием комментариев в Excel VBA - PullRequest
0 голосов
/ 05 марта 2020

Я получил помощь от сообщества, чтобы выяснить этот код. Однако я продолжаю вести себя странно.

У меня есть только три функции для заметок: добавить заметку с форматированием, отформатировать заметку и отформатировать все заметки. AddServiceNote и FormatNote работают. Тем не менее, я получаю две разные ошибки при попытке запустить FormatNotes. На некоторое время код перестал работать, и я получил сообщение об ошибке (я думаю, 91). Я сделал некоторые тестовые изменения, а затем изменил его обратно на исходный код, но теперь код делает что-то другое (возможно, я на самом деле не возвращал код в исходное состояние). Он форматирует все заметки, но размещает их в соответствии с одной ячейкой, а не с родительской ячейкой каждого комментария.

Public Note As Comment

Public Sub AddServiceNote()
 If ActiveCell.Comment Is Nothing Then
  Set Note = ActiveCell.AddComment
  Note.Text "Function: "
  OrganizeElements Note
 End If
End Sub

Public Sub FormatNote()
 If Not ActiveCell.Comment Is Nothing Then
  Set Note = ActiveCell.Comment
  OrganizeElements Note
 End If
End Sub

Public Sub FormatNotes()
 For Each Note In ActiveSheet.Comments
  OrganizeElements Note
 Next
End Sub

Public Sub OrganizeElements(ByVal Note As Comment)
 Note.Shape.Top = ActiveCell.Comment.Parent.Top - 10
 Note.Shape.Left = ActiveCell.Comment.Parent.Offset(0, 1).Left + 10
 Note.Shape.Placement = 3
 'And a continuing list of formats that work 
End Sub

В OrganizeElements у меня работает около 30 строк кода. Все они работают, когда я запускаю AddServiceNote и FormatNote. Когда я запускаю FormatNotes, первые две строки не работают:

 Note.Shape.Top = ActiveCell.Comment.Parent.Top - 10
 Note.Shape.Left = ActiveCell.Comment.Parent.Offset(0, 1).Left + 10

Эти строки должны располагать комментарий на основе ячейки, к которой он подключен. Я думаю, что ActiveCell может быть проблемой. Ни одна из других строк форматирования кода не имеет ActiveCell и, кажется, не работает с каждой заметкой. Код работает, когда я работаю с одной заметкой, но когда я пытаюсь отформатировать все заметки, ActiveCell, кажется, ссылается на фактическую выделенную ячейку в электронной таблице и не изменяется.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...