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 工作簿来解决它。