VBA Intersect Bereich in Bereich überprüfen statt Zelle in Bereich?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,

das Problem scheint hier darin zu liegen das Intersect nie leer sein wird solange es mindestens eine Überschneidung der Bereiche gibt, was allerdings keinen Rückschluss auf einen evtl "Überschuss" zulässt. Um einen Überschuss festzustellen, müsste man jede Zelle im selektierten Bereich einzeln betrachten

Sub Bereichvergleich()
Dim Bereich As Range
Dim zelle As Range
Dim Ergebnis As Boolean

Set Bereich = Range("B1:B10")
Ergebnis = False

For Each zelle In Selection
    If Application.Intersect(zelle, Bereich) Is Nothing Then
        Ergebnis = True
        Exit For
    End If
Next zelle

If Ergebnis Then
    MsgBox "Nicht innerhalb"
End If

End Sub
Von Experte Suboptimierer bestätigt

Einfacher geht es, wenn Du prüfst, ob der Intersect Bereich gleich ist mit dem markierten Bereich. Hier mal ein Ansatz dafür:

Sub test()
Dim RangeA As Range
Dim RangeB As Range

Set RangeA = Range("B1:B10")

Set RangeB = Range("B1:B2")
Debug.Print Intersect(RangeA, RangeB).Address = RangeB.Address
' liefert WAHR

Set RangeB = Range("A1:B2")
Debug.Print Intersect(RangeA, RangeB).Address = RangeB.Address
'liefert FALSCH
End Sub

Hilft Dir das?