Добавить комментарий поверх существующего комментария (поведение sendkeys) - PullRequest
0 голосов
/ 04 июля 2019

У меня есть макрос, который просто вводит комментарий в ячейку. Связан с горячей клавишей, поскольку мы используем множество комментариев в конкретном файле группы.

Ожидаемый результат:

  1. добавить комментарий, ввести дату

  2. , если в ячейке уже есть комментарий - добавить новый комментарий выше (также с датой)

Проблема: Макрос ниже делает все правильно, кроме sendkeys в самом конце. Если я ввожу комбинацию вручную: Ctrl+Home, то End я получаю именно там, где хочу в добавленном комментарии. Для комментария, который пишет над существующим комментарием, я хочу быть точно в конце даты в верхней строке. На данный момент все работает нормально, кроме курсора, все еще заканчивающегося внизу

Вопрос: Как заставить vba внутри комментария вести себя как ключи Ctrl+Home, затем End

( tldr: Sendkeys в коде не работает внутри комментария)

    Option Explicit

Sub RPF_Comment()

Dim datum As String, old As String

datum = Format(Now, "dd.mm.yyyy") & ": "
Application.DisplayCommentIndicator = xlCommentIndicatorOnly

On Error GoTo Commentexists

ActiveCell.AddComment ("")
ActiveCell.Comment.Visible = True
ActiveCell.Comment.Shape.Select

With Selection
  .Font.Name = "Arial"
  .Font.Size = 8
  .Font.FontStyle = "Regular"
  .Text = datum
End With
Exit Sub

Commentexists:
On Error GoTo out
ActiveCell.Comment.Visible = True
ActiveCell.Comment.Shape.Select
old = Selection.Text

With Selection
  .Font.Name = "Arial"
  .Font.Size = 8
  .Font.FontStyle = "Regular"
  .Text = datum & Chr(10) & Chr(10) & old
End With

SendKeys "^{HOME}"
SendKeys "{End}"
out:

End Sub

PS: я знаю, что ".select" не очень хорош. но на сабе это долго, 1 выбор в порядке:)

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