我想知道您是否可以帮助我弄清楚为什么worksheet.activate在以下情况下什么都不做。 我关闭
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False,
->创建一个新文件并向其中添加工作表, ->重新打开它们, ->并且当我尝试激活新文件时,它什么也没做,并且主文件保持活动状态。
有人对这种事情有解决方案吗?
Enum getWhat
getRow = 0
getCol = 1
End Enum
Sub main()
SetProgramAlerts 0
Set currentWorkbook= ActiveWorkbook
Set newWorbook = Workbooks.add
With newWorbook
Set WS_Project = .Worksheets("Sheet1")
WS_Project.name = wsProject
'....
End with
SetProgramAlerts 1
newWorbook.Activate 'this actually does nothing, even though application.screenupdating = true
end sub
Public Sub setProgramAlerts(turnThem As turnThem)
'TURN EVERITHING OFF AT THE BEGINING OF A MACRO
'REMEMBER TO TURN BACK ON
DoEvents
Select Case turnThem
Case 0 'All off
With Application
If .ScreenUpdating Or .EnableEvents Or .DisplayAlerts Then
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End If
If Workbooks.Count > 0 Then
If .Calculation <> xlCalculationManual Then .Calculation = xlCalculationManual
End If
'.statusBar = True
End With
Case 1 'All on in opposite order
With Application
'.statusBar = False
If Workbooks.Count > 0 Then
.Calculation = xlCalculationAutomatic
End If
If .DisplayAlerts = False Or .EnableEvents = False Or .ScreenUpdating = False Then
.DisplayAlerts = True
.EnableEvents = True
.ScreenUpdating = True
End If
End With
End Select
DoEvents
End Sub
答案 0 :(得分:0)
我以前见过此问题:
WorkSheet_Activate(和_Deactivate)不起作用
我至少已针对我的情况找到了解决方案。
工作表更改(通过编程方式或手动方式)激活了包含某些条件格式的工作表,该条件格式具有UDF(非常简单的VBA功能)。
删除UDF并将其替换为Excel公式后,问题完全消失了。
答案 1 :(得分:0)
我有同样的问题。 在sheet.activate之前设置Application.ScreenUpdating = True之后,一切正常。