如何测试活动表

时间:2014-09-12 14:05:22

标签: excel vba excel-vba

这是我的代码

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Set Sh = ActiveSheet
If ActiveSheet.Name = "Entrada" Then
    Application.Calculation = xlManual
Else
    Application.Calculation = x1automatic
End If
End Sub

但是所有工作表都要进行人工计算,是什么错误?

THX!

3 个答案:

答案 0 :(得分:1)

您正尝试在应用程序级别更改计算。我猜你想用

ActiveSheet.EnableCalculation = True ' or False

答案 1 :(得分:0)

您设置为“计算”的值应为:xlCalculationManualxlCalculationAutomatic,而不是xlManualx1automatic

请参阅MSDN和此网站http://www.cpearson.com/excel/optimize.htm

答案 2 :(得分:0)

想一想你的 Sh 变量赋值。当 Sh 传递到Workbook_SheetActivate事件宏时, 正在激活工作表。您无需将其设置为活动工作表。以下将始终将新激活的工作表的名称报告给立即窗口(包括新创建的工作表)。

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Debug.Print Sh.Name
End Sub

所以你的条件陈述可以收紧,比如,

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Entrada" Then
        ' do something here
    Else
        ' do something else here
     End If
End Sub