Страницы: 1
RSS
Событие - скрытие строки, Как поймать событие
 
Всем привет. Прошу помочь, как поймать событие на листе а именно скрытие строки. Worksheet_Change не реагирует.
 
Дмитрий Дмитрий, в модуль книги добавьте код
Код
Private WithEvents cb As CommandBars, cbOn As Boolean
Private hiddens As Object 'As Dictionary

Private Sub Hiding_Event(Target As Range)
    MsgBox "Скрытие диапазона " & Target.Address
End Sub

Private Sub cb_OnUpdate()
    Dim sel As Range, addr$
    Set sel = Selection
    With sel
        addr = .Address
        If .EntireRow.Hidden Then
1           If Not hiddens.Exists(addr) Then
                hiddens.Add addr, Empty
                Hiding_Event sel
            End If
        ElseIf .EntireColumn.Hidden Then GoTo 1
        Else
            If hiddens.Exists(addr) Then
                hiddens.Remove addr
            End If
        End If
    End With
End Sub

Private Sub Workbook_Open()
    cbInit
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Not cbOn Then cbInit
End Sub
Sub cbInit()
    Set cb = Application.CommandBars
    Set hiddens = CreateObject("Scripting.Dictionary")
    cbOn = True
End Sub
Изменено: testuser - 04.04.2024 15:58:24
 
testuser, так-так-с… А где у нас флаг выставляется-с?  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, уже выставляется )
 
testuser, воооот — другое дело  :D
Я бы так делал и не проверял флаг — просто вызывал бы процедуру всегда
А вообще, я не догоняю, как эта магия работает. До сих пор)) Ткни куда-нибудь, пожалуйста или объясни своими словами  :idea:
Изменено: Jack Famous - 04.04.2024 16:03:46
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
testuser, спасибо большое))
 
Цитата
Jack Famous написал:
А вообще, я не догоняю, как эта магия работает.
Извини, не увидел магии, точнее такая же магия как у меня была без флага )
 
testuser, да я не про флаг, а про CB и события на нём.
Нашёл — тут ты мне давал ссылку сюда. Больше ничего не известно?  :)
Изменено: Jack Famous - 04.04.2024 16:56:55
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
про CB и события на нём
Принцип такой, что коллекцияя CommandBars является объектом (com-классом), транслирующим (елси я правильно выразился) события. Чтобы подклюиться к событиям объекта нужно объявить его WithEvents. Кога мы инициализируем объект "cb" то автоматически подключаемся к его событиям. События там генерятся, очевидно, при любом (почти) действии прямо или косвенно связаном с панелями, менюшками, кнопками. При выборе пункта в контекстном меню, также генерится это событие и таким образом можно отловить момент скрытия строки, поскольку перед этим делается клик по пункту "Скрть" в контекстном меню.
 
testuser, большое спасибо! Вот теперь намного более понятно!  :idea:
То есть, если скрывать макросом, то так уже не отловить?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Яб subtotal прикрепил и пересчет обрабатывал. Скрытие строк фильтром не уверен что через меню обработается. Но на телефоне совсем не проверить :-)
Изменено: БМВ - 04.04.2024 18:44:50
По вопросам из тем форума, личку не читаю.
 
Цитата
Jack Famous написал:
То есть, если скрывать макросом, то так уже не отловить?
по факту работает и в таком случае. Универсальная штука этот CommandBars, можно скролл отслеживать, может быть еще что-то )
 
testuser, главное — правильно уточнять условия, раз событие срабатывает на многое  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх