gpt4 book ai didi

excel - 重新激活工作簿时执行操作

转载 作者:行者123 更新时间:2023-12-02 13:39:12 26 4
gpt4 key购买 nike

我有一个工作簿,其中包含通过 VBA 打开其他工作簿的按钮。

我的理解是,当我在其中时,这个初始工作簿(我们称之为 Hub 工作簿)既是 ThisWorkbook 又是 ActiveWorkbook。

通过其中一个按钮打开另一个工作簿时,新打开的工作簿将变为 ActiveWorkbook。

当我点击返回 Hub 时,它再次变为 ActiveWorkbook。

仅当 Hub 恢复事件工作簿状态时,我才想执行操作。

我尝试通过在工作表上执行操作来执行此操作,但如果它是唯一的工作表并且我只是从另一个工作簿中单击返回它,则此操作不会执行。例如,如果我有两个工作表并单击返回此工作表,就会出现这种情况。

Private Sub Worksheet_Activate()
MsgBox "Worksheet Reactivated"
End Sub

我似乎无法让它按我的要求工作,但我确信一定有某种方法可以做到这一点。

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

一个Worksheet模块,例如 Sheet1 ,是一种特殊类型的类模块,它继承 Worksheet 的成员。类,并让您轻松处理为 Worksheet 定义的事件目的。在运行时,Sheet1模块代表 Worksheet 的一个非常具体的实例类 - 因此您在该模块中实现的任何事件处理程序都只会针对从对象激发的事件而被调用。

因此,一个Worksheet_Activate Sheet1 代码隐藏中的处理程序仅当 Sheet1 时才会运行对象发射其 Activate事件。

如果您不关心任何特定或特定的工作表,那么您需要在不同级别处理事件:ThisWorkbook module 是一种特殊类型的类模块,它继承 Workbook 的成员。类,并让您轻松处理为 Workbook 定义的事件目的。此工作簿对象始终代表承载您所在的 VBA 项目的特定工作簿,而不是其他工作簿。

一个Workbook对象触发 SheetActivate每当任何工作表(无论是 WorksheetChart 工作表或任何其他类型的工作表)被激活时都会发生事件 - 您可以通过 Sh 获取激活的工作表相应处理程序的参数。

一个Workbook对象也会激发自己的 Activate每当它变成ActiveWorkbook时发生事件.

看起来您想要处理 Workbook事件。尝试使用 ThisWorkbook 中可以获得的处理程序模块,看看什么最适合您的要求。

选择WorkbookThisWorkbook 中代码 Pane 左上角的组合框,然后从右侧组合框中选择一个事件,以使 VBE 自动生成具有正确签名的事件处理程序原型(prototype):

ThisWorkbook code pane dropdowns

如果您需要处理Application -范围内的事件,事情会变得更加复杂,但关键是您需要一个类模块(可能是 ThisWorkbook )来声明 WithEvents变量:

Private WithEvents App As Excel.Application

现在左上角的下拉列表将列出 App ,选择后,右上角的下拉菜单将让您选择 Excel.Application要处理的事件...前提是您 Set这个App对象变量为有效 Excel.Application例如,引用 Workbook_Open处理程序:

Private Sub Workbook_Open()
Set App = Me.Application
End Sub

例如,现在您可以处理在激活任何工作簿时触发的事件。

关于excel - 重新激活工作簿时执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53853434/

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