VBA - Worksheet.activate 不工作
VBA - Worksheet.activate not working
我想知道您能否帮我弄清楚为什么 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
我以前见过这个问题:
WorkSheet_Activate (and _Deactivate) not working
我至少找到了解决方案。
以编程方式或手动方式更改工作表,激活包含具有 UDF 的特定条件格式的工作表(一个非常简单的 VBA 函数)。
删除 UDF 并用 Excel 公式替换它们后,问题完全消失。
我遇到了同样的问题。
在 sheet.activate 之前设置 Application.ScreenUpdating = True 之后一切正常。
我有一个类似的问题,没有反应工作表事件。我终于可以通过简单地关闭和 re-opening 工作簿来解决它。
我想知道您能否帮我弄清楚为什么 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
我以前见过这个问题:
WorkSheet_Activate (and _Deactivate) not working
我至少找到了解决方案。
以编程方式或手动方式更改工作表,激活包含具有 UDF 的特定条件格式的工作表(一个非常简单的 VBA 函数)。
删除 UDF 并用 Excel 公式替换它们后,问题完全消失。
我遇到了同样的问题。 在 sheet.activate 之前设置 Application.ScreenUpdating = True 之后一切正常。
我有一个类似的问题,没有反应工作表事件。我终于可以通过简单地关闭和 re-opening 工作簿来解决它。