AW: nur eine Tabelle anwählen, falls ...
02.06.2009 14:18:29
Peter
Hallo Hajo
Danke für die ausführliche Antwort.
In aller Regel arbeite ich nicht mit SELECT.
Hier ist mir allerdings nicht klar, wie ich das SELECT umgehen kann.
Wenn is mit Sh.Select arbeite, dann wir eine allfällige Mehrfachselektion von Arbeitsblättern aufgehoben und nur mit dem aktivierten weitergearbeitet. Wenn ich mit Sh.Activate arbeite, bleibt es bei der Mehrfachselektion und der aufgerufene Code wird beim Ablaufen unterbrochen.
Was wäre nun hier eine eine Alternative zu Sh.Select?
Gruss, Peter
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Select Case Target.Address(False, False)
Dim rngS As Range, lngS As Long, rngT As Range
Case "A1:F1" 'wird in einer Tabelle dieser Bereich angewählt, wird die ganze Tabelle entschü _
tzt
'resp. der unten aufgeführte Code (hier Call Aufheben) ausgeführt
Sh.Select
Set rngS = Range("A1:F1") ' hier Bereich angeben - dürfen sich nicht überschneiden!
lngS = rngS.Count
If Target.Count lngS Then Exit Sub
Set rngT = Intersect(Target, rngS)
If rngT Is Nothing Then Exit Sub
If rngT.Count lngS Then Exit Sub
Call Aufheben
Case "A2:F2" 'wird in einer Tabelle dieser Bereich angewählt, wird die ganze Tabelle geschü _
tzt
'resp. der unten aufgeführte Code (hier Call DateiSchützen) ausgeführt
Sh.Select
Set rngS = Range("A2:F2") ' hier Bereich angeben - dürfen sich nicht überschneiden!
lngS = rngS.Count
If Target.Count lngS Then Exit Sub
Set rngT = Intersect(Target, rngS)
If rngT Is Nothing Then Exit Sub
If rngT.Count lngS Then Exit Sub
Call DateiSchützen
End Select
End Sub
Sub Aufheben()
Dim Wks As Worksheet
For Each Wks In ThisWorkbook.Worksheets
Select Case Wks.Name
Case "abc"
'nichts machen
Case Else
Wks.Protect Password:=123
End Select
Wks.Unprotect Password:=123
Next
End Sub
Sub DateiSchützen()
Dim Wks As Worksheet
Call Aufheben
For Each Wks In ThisWorkbook.Worksheets
Select Case Wks.Name
Case "abc"
Case Else
Wks.Protect DrawingObjects:=True, _
contents:=True, _
UserInterfaceOnly:=True, _
Scenarios:=True, Password:=123
Wks.EnableSelection = xlNoRestrictions
End Select
Next
End Sub