Hallo,
wenn die nachstehende Funktion ausgetauscht wird, sollte ein Teil-Erfolg erzielt werden:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
ByVal Target As Range)
Dim wsh As Worksheet
Dim rng As Range
Set wsh = Target.Worksheet
Set rng = wsh.Range(wsh.Range("A1"), wsh.Range("K3"))
If Intersect(Target, rng) Is Nothing Then
If Not prevCell Is Nothing Then
prevCell.EntireRow.Interior.ColorIndex = xlColorIndexNone
prevCell.EntireColumn.Interior.ColorIndex = xlColorIndexNone
End If
Target.EntireRow.Interior.Color = RGB(255, 200, 200)
Target.EntireColumn.Interior.Color = RGB(255, 200, 200)
Set prevCell = Target
End If
End Sub
Warum nur ein Teil-Erfolg?
Die Marking der ganzen Spalte bzw. Zeile überschneidet weiterhin auch den gesperrten Bereich. Hier fehlt eine Funktion wie not intersect oder so ähnlich.
Die gesuchte Funktion muss aus einem Range ein weiteres überschneidendes Range abziehen.
Der Haken dabei ist folgender: Eine Spalte hat in Excel mittlerweile über 1 Mio. Zellen. Wenn eine Funktion nun Zelle für Zelle eine ganze Spalte durchläuft, dauert diese Aktion viel zu lange. Excel würde nicht mehr bedienbar sein.
Von Microsoft gibt es keinen Befehl, der einen überschneidenen Bereich von einem anderen Bereich abziehen kann.
LG, BigBen
|