VBA 在 if 语句中更新屏幕

VBA screenupdating in if statement

我在用户表单中有一个组合框,其中包含 sheets。如果您选择 sheet,它会激活 sheet,因此您可以选择取消保护。

我的问题是,如果我选择带有组合框的 sheet,它会跳转到 sheet。

我最后尝试设置 Application.Calculation = xlCalculationManualApplication.ScreenUpdating = False,并尝试使用 If-语句。没用。

Public comBox2 As Boolean
Private Sub ComboBox2_Change()
    Dim sName As String 'name of sheet to show

    comBox2 = True

    sheetName = ComboBox2.Value

    With ActiveWorkbook.Sheets(sheetName)
        .Activate
    End With
End Sub
Sub Userform_initialize()
    If comBox2 Then
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    ElseIf comBox2 = False Then
    comBox2 = False
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    End If
End Sub

如果组合框在作品中sheet,请检查组合框的sheet是否处于活动状态sheet:

Private Sub ComboBox2_Change()

    If ComboBox2.Parent.Name = ActiveSheet.Name Then Exit Sub
    ActiveWorkbook.Sheets(sheetName).Activate

End Sub

如果是表格:

Private Sub ComboBox2_Change()

    If ComboBox2.Text = ActiveSheet.Name Then Exit Sub
    ActiveWorkbook.Sheets(sheetName).Activate

End Sub
Public comBox2 As Boolean
Private Sub ComboBox2_Change()
    Dim sName As String 'name of sheet to show

    comBox2 = True

    sheetName = ComboBox2.Value

End Sub
Sub Userform_initialize()
    If comBox2 Then
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    ElseIf comBox2 = False Then
    comBox2 = False
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    End If
End Sub

所以我删除了那个激活的sheet。现在我要做的是在带有标题 "unprotect" 的 ti 组合框旁边放置一个按钮,并在其中放置解除保护的代码,例如:

 Activeworkbook.sheets(ComboBox2.value).Unprotect "password" ' in case there is fixed password

或者如果有不同的密码则

Dim pass As Variant
pass = InputBox("Password?")
Activeworkbook.sheets(ComboBox2.value).Unprotect pass