Страницы: 1
RSS
VBA Фиксированное примечание
 
Код взят с архивной темы
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=10726&PAGEN_1=3

Чуток переделал для фиксации примечаний, но проблема была и в изначальном коде. Помогите плиз
Цитата
Когда есть примечание на странице
НЕЛЬЗЯ !!! вставить строку или колонку Внутрь объединённой области.
Если ткнуть по навигации (11-18)  или (E-L)
происходит выделение  всех строк или колонок задействованных в области
В файле есть 3 тестовых листа
На третьем попробуйте вставить строку\колонку
Изменено: Avantyrist - 11.12.2022 00:27:31
 
Мдяяяя, эти факанутые примечания не дали мне заснуть !!
---------------------------------------------------------------------------------------
'   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
Изменено: Avantyrist - 12.12.2022 15:30:40
 
Исправил ошибку
Страницы: 1
Читают тему
Наверх