Мдяяяя, эти факанутые примечания не дали мне заснуть !!
---------------------------------------------------------------------------------------
' BKSI доработка:
' - Не используется цикл для выключения комментариев
' - Позиционирует примечание в правом верхнем углу
' - Автоматически корректирует размер по наполнению текста
' - Исправлен баг со вставкой строк\колонок в "объединённых ячейках"
'---------------------------------------------------------------------------------------
Если мы тыкаем по навигации(Заголовкам) и обращаемся к свойствам Target происходит какойто перерасчёт выделенных областей.
Код |
---|
If Target.MergeCells <> False Then 'есть состояние NULL
или
If Not (Target.Comment Is Nothing) Then
|
Кстати у Target.MergeCells есть состояние NULL и оно соответствует тому как мы тыкаем по навигации (вроде :Р)
Но можно обратиться к свойству Count и будет всё норм
Код |
---|
If Target.Count >= 5000 Then GoTo Erreble |
МОЖЕТ ЕСТЬ какое-то более адекватное решение определения клика по навигации ?------------------------------------------
Решение:
Код |
---|
'---------------------------------------------------------------------------------------
' Module : Лист1
' DateTime : 23.11.2009 11:02
' Author : The_Prist
' Purpose : http://www.planetaexcel.ru/forum.php?thread_id=11528
' Отображение примечания при активации ячейки.
' Тема: Как настроить примечания ?
' Автор: ksmspb
'---------------------------------------------------------------------------------------
' https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=154115
' BKSI доработка:
' - Не используется цикл для выключения комментариев
' - Позиционирует примечание в правом верхнем углу
' - Автоматически корректирует размер по наполнению текста
' - Исправлен баг со вставкой строк\колонок в "объединённых ячейках"
'---------------------------------------------------------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim oComment As Comment
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
If Target.Count >= 5000 Then GoTo EndFn
If Not (Target.Comment Is Nothing) Then
Set oComment = Target.Comment
' Target.MergeCells есть состояние NULL (клик по навигации)
ElseIf Target.MergeCells <> False And Not (Target.Cells(1).Comment Is Nothing) Then
Set oComment = Target.Cells(1).Comment
Else
GoTo EndFn
End If
oComment.Shape.Top = Target.Top
oComment.Shape.Left = Target.Left + Target.Width + 10
oComment.Shape.TextFrame.AutoSize = True
oComment.Visible = True
EndFn:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub |