2014-09-12 2 views
0

Вот мой кодКак протестировать ActiveSheet

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!

ответ

0

Просто мысли о Sh переменное назначение. Когда Sh передается в макрос события Workbook_SheetActivate, он is рабочий лист активируется. Вам не нужно устанавливать его на активный лист. Следующее всегда будет сообщать имя нового рабочего листа, которое будет вновь активировано в окне Immediate (включая вновь созданные рабочие листы).

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 
1

Вы пытаетесь изменить расчет на уровне приложения. Я предполагаю, что вы хотите использовать

ActiveSheet.EnableCalculation = True ' or False 
Смежные вопросы