Intersect( range(xx), Target) in einem Modul

Bild

Betrifft: Intersect( range(xx), Target) in einem Modul
von: Arthur
Geschrieben am: 26.10.2015 21:23:51

Hallo Excelfans.
Ihr könnt mir sicher helfen. In einem Tabellenblatt möchte ich auf SelectionChange reagieren und eine Routine in einem Modul aufrufen, das u.A. die ausgewählte Zelle vergleicht. Leider kommt die Meldung: "Die Methode 'Range' für das Objekt '_Global' ist fehlgeschlagen". Warum?/ Wie geht's?
Im Tabellenblatt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call ISectTest(Target)
End Sub
In einem Modul:
Sub ISectTest(ByRef Target As Range)
If Not (Intersect(Range("myrange"), Target) Is Nothing) Then
Debug.Print "ok"
Else
Debug.Print "nok"
End If
End Sub Wo liegt mein Denkfehler?
Gruß, Arthur.

Bild

Betrifft: AW: Intersect( range(xx), Target) in einem Modul
von: Gerd L
Geschrieben am: 26.10.2015 21:39:19
Hallo Arthur,
du hast dem Namen "myrange" keinen Bereich im Tabellenblatt mit der SelectionChange-Prozedur zugewiesen.
Ferner empfehle ich (nur), die übernommenen Range-Variable im Makro des allgemeinen Moduls nicht "Target" sondern anderst, ggf. "rngTarget" zu benennen.
Gruß Gerd

Bild

Betrifft: AW: Intersect( range(xx), Target) in einem Modul
von: Arthur
Geschrieben am: 26.10.2015 21:51:45
Hallo Gerd.
Danke für die Antwort. Leider ist das nicht die Lösung. "myRange" existiert, der Debug in der Überwachung bestätigt dies. Target 'ordentlicher' zu benennen ist sicher ein guter Tipp, dennoch hilft auch das nicht. Der Bereich von Target bleibt ja gleich.
Die Frage bleibt. Was tun?
Gruß, Arthur.

Bild

Betrifft: AW: Intersect( range(xx), Target) in einem Modul
von: Luschi
Geschrieben am: 26.10.2015 22:15:27
Hallo Arthur,
man muß noch zusätzlich prüfen ob 'rngTarget' und Range("myRange") in der gleichen
Tabelle liegen, sonst streikt 'Intersect':


Sub ISectTest(ByRef rngTarget As Range)
    If Range("myRange").Parent.Name = rngTarget.Parent.Name Then
       If Not (Intersect(Range("myRange"), rngTarget) Is Nothing) Then
           Debug.Print "ok"
       Else
           Debug.Print "nicht ok"
      End If
    Else
       Debug.Print "nicht ok!!!"
    End If
End Sub
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Intersect( range(xx), Target) in einem Modul
von: Arthur
Geschrieben am: 26.10.2015 22:18:13
Hallo Gerd.
Danke für's mithelfen. Das Problem ist wohl einfach. Die Bereiche sind auf unterschiedlichen Blättern. Weil's im Original in einer Schleife über mehrere Blätter läuft und ich davon ausgegangen war, dass Intersect in so einem Fall zu 'Nothing' führt, wurde ich in die Irre geleitet ... Sorry.
Gruß, Arthur

Bild

Betrifft: AW: Intersect( range(xx), Target) in einem Modul
von: Gerd L
Geschrieben am: 26.10.2015 22:11:55
Hallo Arthur,
dann lade doch bitte deine Beispieldatei, in der dieser Fehler auftritt, hoch.
Gruß Gerd

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabelle formatieren"