gpt4 book ai didi

vba - 在运行宏之前处理工作表更改事件

转载 作者:行者123 更新时间:2023-12-02 17:36:59 25 4
gpt4 key购买 nike

假设 Excel 工作表包含两个 vba Sub 过程:

  • Sub1:工作表更改处理程序

    Private Sub Worksheet_Change(ByVal Target As range)
    'do something
    End Sub
  • Sub2:单击按钮时运行的 Sub

当用户在编辑单元格时单击 Sub2 按钮时,两个 Sub 都会按照 Sub2(因为他单击了该按钮)-> Sub1(因为编辑操作已终止)的顺序执行.

如何反转此订单?我想在运行与单击的按钮关联的 Sub 之前处理工作表更改。

两个 Sub 必须保持不相关。 IE。如果单击 Sub2 按钮并且没有进行单元格编辑,则只应执行 Sub2。

最佳答案

我想出了这个解决方案:

Private Sub Worksheet_Change(ByVal Target As range)
'handle worksheet changes here
End Sub
'Workaround to make sure other pending events (like worksheet changes) are handled first.
'It schedules handleButtonClick at the end of the event queue
Public Sub handleButtonClick ()
Application.OnTime Now, "handleButtonClick_private"
End Sub

Private Sub handleButtonClick_private ()
'handle button click here
End Sub

它的工作原理是将实际处理程序推迟到事件队列的末尾。因此,在执行实际处理程序之前,将处理可能的待处理工作表更改事件。

关于vba - 在运行宏之前处理工作表更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46513643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com