VBA 在 if 语句中更新屏幕
VBA screenupdating in if statement
我在用户表单中有一个组合框,其中包含 sheets。如果您选择 sheet,它会激活 sheet,因此您可以选择取消保护。
我的问题是,如果我选择带有组合框的 sheet,它会跳转到 sheet。
我最后尝试设置 Application.Calculation = xlCalculationManual
和 Application.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
我在用户表单中有一个组合框,其中包含 sheets。如果您选择 sheet,它会激活 sheet,因此您可以选择取消保护。
我的问题是,如果我选择带有组合框的 sheet,它会跳转到 sheet。
我最后尝试设置 Application.Calculation = xlCalculationManual
和 Application.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