этот вопрос по отношению к этот вопрос переполнения стека, но я чувствовал, что проблема в сердце меньше о программировании и больше об ограничениях программы, поэтому я спрашиваю здесь.
Я надеюсь, что кто-то сможет объяснить расхождения, которые я вижу с Windows Snap при использовании события изменения размера окна в качестве триггера для некоторого кода VBA.
у меня есть этот код ThisWorkbook
модуль. Он добавляет 1 к значение A1
на первом листе при каждом изменении размера окна:
Private Sub Workbook_WindowResize(ByVal Wn As Window)
Dim n As Integer
n = ThisWorkbook.Worksheets(1).Range("a1").Value
ThisWorkbook.Worksheets(1).Range("a1").Value = n + 1
End Sub
событие будет срабатывающие при:
- окно развернуто или свернуто
- окно изменяется путем перетаскивания краев внутрь / наружу
- окно привязывается в сторону, нажав Windows + стрелка на клавиатуре
- окно(a) защелкивается в сторону в результате привязки другого окна (b) в одну сторону и затем выберите первое окно(a) из эскизов Windows Snap Assist
событие не будет срабатывающие при:
- окно привязывается к стороне, перетаскивая окно к краю экрана с помощью мыши
- окно unsnapped от стороны, перетаскивая окно с помощью мыши
что я пробовал
Я проверил Примечание дополнительные сведения об ограничениях события изменения размера Windows. Как вы можете видеть из этой ссылки, недостаточно информации, чтобы быть полезной в этой ситуации.
Я также проверил Stack Overflow и Super User и не нашел никаких других вопросов, упоминающих использование Windows Snap в качестве триггера для макроса, кроме того, о котором говорилось в начале моего вопроса.
изменить: я тоже пробовал Application_WindowResize, который дает тот же результат.
я использовал этот код в ThisWorkbook
модуль для инициализации событий приложения:
Private WithEvents App As Application
Private Sub Workbook_Open()
Set App = Application
End Sub
и этот код после закрытия и повторного открытия книги, чтобы проверить триггер событие:
Private Sub App_WindowResize(ByVal Wb As Workbook, ByVal Wn As Window)
Dim n As Integer
n = ThisWorkbook.Worksheets(1).Range("a1").Value
ThisWorkbook.Worksheets(1).Range("a1").Value = n + 1
End Sub
для уточнения, этот код выполняется в новой книге, более ранний код отсутствует в VBE. Я вижу тот же результат, что и выше, событие срабатывает для всего, кроме перетаскивания и привязки к краю экрана с помощью мыши.
может ли кто-нибудь сказать мне, почему событие изменения размера Windows не срабатывает для случаев выше?