Der folgende Code funktioniert gut, wenn ich den Prozess in 3 separate Subs aufteilen, aber ich habe Probleme bei der Kombination dieser in einem Prozess.Excel VBA - Aufruf mehrerer Subs in einem Arbeitsblatt
Idealerweise möchte ich, dass der Code ausgeführt und das 'Sheet' vorübergehend entsperrt wird, führen Sie den 'Worksheet_Calculate'-Unterbefehl aus und sperren Sie das' Sheet 'erneut.
Könnte jemand bitte helfen.
Private Sub UnprotectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = "Test"
For Each sh In ActiveWorkbook.Worksheets
sh.Unprotect Password:=yourPassword
Next sh
End Sub
Private Sub Worksheet_Calculate()
Dim LastRow As Long, c As Range
Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "E").End(xlUp).Row
On Error Resume Next
Dim LastRow As Long, c As Range
Application.EnableEvents = False
LastRow = Cells(Cells.Rows.Count, "E").End(xlUp).Row
On Error Resume Next
For Each Dependents In Range("G6")
For Each HideDependents In Range("G18:G19")
If Dependents.Value = 0 Then
HideDependents.EntireRow.Hidden = True
ElseIf Dependents.Value >= 1 Then
HideDependents.EntireRow.Hidden = False
End If
Next
Next
For Each Vehicle In Range("G7")
For Each HideVehicle In Range("G45:G48")
If Vehicle.Value = 0 Then
HideVehicle.EntireRow.Hidden = True
ElseIf Vehicle.Value >= 1 Then
HideVehicle.EntireRow.Hidden = False
End If
Next
Next
For Each Joint In Range("G9")
For Each HideJoint In Range("I14:J65")
If Joint.Value = 0 Then
HideJoint.EntireColumn.Hidden = True
ElseIf Joint.Value = 1 Then
HideJoint.EntireColumn.Hidden = False
End If
Next
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub
Private Sub ProtectAll()
Dim sh As Worksheet
Dim yourPassword As String
yourPassword = "Test"
For Each sh In ActiveWorkbook.Worksheets
sh.Protect Password:=yourPassword
Next sh
End Sub
Vielen Dank für Ihre Antwort, es funktioniert jedoch ist es eine Möglichkeit, die das Skript durch den Prozess automatisch ausgeführt wird, wenn ‚G6: G9‘ Änderungen wie ich muß noch den Befehl manuell ausführen, um für die Änderungen zu Ort. –
Fügen Sie dem Arbeitsblatt Folgendes hinzu, das automatisch für Änderungen aktualisiert/überwacht werden soll. Private Sub Worksheet_SelectionChange (ByVal Target As Range) If Not Intersect (Target, Range ("G6: G9")) Is Nothing Dann Anruf End If End Sub kombinieren –
Funktioniert perfekt, Dank für Ihre Hilfe danken. –