相关疑难解决方法(0)

Excel 2010 VBA - 用于在应用程序之间切换的事件处理程序?

也许今天早上我只是在Googles上表现糟糕,但是我很快就在VBA中找到一个事件处理程序,用于在从其他应用程序切换时激活工作簿.我正在使用Excel 2010.

在ThisWorkbook对象中,我尝试了以下内容:

Private Sub Workbook_Activate()
    MsgBox "1"
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    MsgBox "2"
End Sub
Run Code Online (Sandbox Code Playgroud)

在类模块中,我尝试过这些:

Public WithEvents appevent As Application
Private Sub appevent_ProtectedViewWindowActivate(ByVal Pvw As ProtectedViewWindow)
    MsgBox "1"
End Sub

Private Sub appevent_ProtectedViewWindowOpen(ByVal Pvw As ProtectedViewWindow)
    MsgBox "2"
End Sub

Private Sub appevent_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
    MsgBox "3"
End Sub

Private Sub appevent_WorkbookActivate(ByVal Wb As Workbook)
    MsgBox "4"
End Sub

Private Sub appevent_WorkbookDeactivate(ByVal Wb As Workbook)
    MsgBox "5"
End Sub …
Run Code Online (Sandbox Code Playgroud)

excel vba

5
推荐指数
1
解决办法
4959
查看次数

仅在Active Workbook上进行Excel计算,寻找变通方法

当您打开多个Excel文件,并且VBA/VSTO代码调用该Calculate函数或打开自动计算时,Excel将痛苦地重新计算所有打开的工作簿,而不仅仅是活动工作簿.

在此输入图像描述 这是一个众所周知且报道良多的问题,已存在多年,但微软似乎并不想修复它.

保存前仅计算活动工作簿

Microsoft Excel愿望清单:工作簿级别计算

可笑的是,在VBA和VSTO中,微软让我们有能力:

  • 重新计算特定的Worksheeet
  • 重新计算所有打开的工作簿

...但是没有选择只重新计算一个特定的工作簿.

在我工作的金融公司,这是一个巨大的问题.我们的精算师有大,笨重的Excel文件,充分公式,当他们点击计算上一个工作簿或我们保存文件前进行计算,然后他们必须等待几分钟到其他所有打开的Excel文件得到计算.

有两种方法可以解决这个问题.

你可以像这样运行一些VBA:

Application.Calculation = xlManual 
For Each sh In ActiveWorkbook.Worksheets 
    sh.Calculate 
Next sh 
Run Code Online (Sandbox Code Playgroud)

..但这不能保证有效.您的"Sheet1"可能包含指向"Sheet2"中单元格的公式,但"Sheet2"中的其他单元格可能依赖于"Sheet1".因此,计算每个工作表一次可能不足以在工作簿上执行完整计算.

或者,您可以在单独的实例中打开每个Excel文件(通过在打开Excel图标时按住ALT).但是,你失去了完整的Excel cut'n'pasting功能,如下所述:

无法在Excel实例之间完全切割'n'

所以,我的问题是......有没有人找到解决这个问题的方法

只想重新计算Active Excel工作簿中的单元格.

我想知道是否可以添加一些VBA或VSTO,在我启动Active Workbook上的计算之前将所有非活动工作簿设置为"只读",从而防止其他工作簿被重新计算.但这是不可能的.Workbook.ReadOnly只能读取" ",而不能以编程方式设置.

或者可能在Worksheet_Calculate事件中添加一个处理程序,它检查正在运行的VBA代码是否属于Active Workbook,如果没有,它会中止尝试计算......?但这个事件实际上被拉开序幕后,该工作表已被计算,所以一切都太迟了.

我们公司不可能是唯一遭受这个问题的人......

任何建议(除了升级到Lotus 1-2-3)?

excel vba vsto excel-vba

5
推荐指数
1
解决办法
2459
查看次数

标签 统计

excel ×2

vba ×2

excel-vba ×1

vsto ×1