在 VBA 中组合三个过程

Sno*_*tus 0 excel vba

下午好,

我试图将以下三个 VBA 部分结合起来,但没有任何运气。搜索并没有给我带来多大好处。将不胜感激任何帮助。

Sub UnProtectSheetWithPassword()

Sheets("Sheet2").Unprotect Password:="myPassword

End Sub"
Run Code Online (Sandbox Code Playgroud)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("O3").Address Then
        Range("B8:Q507").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("O2:O3")
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)
Sub ProtectSheetWithPassword()

Sheets("Sheet2").Protect Password:="myPassword"

End Sub
Run Code Online (Sandbox Code Playgroud)

小智 5

也许这就是你想要的?

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("O3").Address Then
        Sheets("Sheet2").Unprotect Password:="myPassword"
        Range("B8:Q507").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("O2:O3")
        Sheets("Sheet2").Protect Password:="myPassword"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 将“Range()”对象替换为“Me.Range()”,尤其是“CriteriaRange”中的对象。切勿使用不合格的范围对象。如果“Sheet2”是“Change”事件所在的工作表,则也将“Sheets("Sheet2")”替换为“Me”。 (3认同)