Intersect!
-
- Beiträge: 10
- Registriert: 10. Okt 2022, 21:17
- Kontaktdaten:
Intersect!
Guten Tag!
In diversen Bereichen von "learnmicrosoft" habe ich zu Intersect nachgelesen.
Ich habe diesen Befehl noch nie verwendet. Ich kann mich auchnicht erinnern diesen benötigt zu haben.
Wann verwendet man Intersect und was tut das überhaupt?
Freue mich auf einfache und verstädnlcihe Erklärung, wenn das jemand machen möchte
#danke!
theTroother
In diversen Bereichen von "learnmicrosoft" habe ich zu Intersect nachgelesen.
Ich habe diesen Befehl noch nie verwendet. Ich kann mich auchnicht erinnern diesen benötigt zu haben.
Wann verwendet man Intersect und was tut das überhaupt?
Freue mich auf einfache und verstädnlcihe Erklärung, wenn das jemand machen möchte
#danke!
theTroother
-
- Beiträge: 52
- Registriert: 30. Mai 2024, 19:42
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 52 Mal
- Kontaktdaten:
Re: Intersect!
Moin,
also die Meisten (auch ich) verwenden Intersect fast ausschließlich im Change- oder SelectionChange-Ereignis. Also in Ereignissen die ein Target mitbringen. Hier kann man einfach prüfen ob das Target innerhalb eines gewünschten Bereichs liegt.
Intersect gibt einfach die sich überschneidenden Zellen zwischen zwei Bereichen zurück.
https://learn.microsoft.com/de-de/offic ... .intersect
Gruß Mr. K.
also die Meisten (auch ich) verwenden Intersect fast ausschließlich im Change- oder SelectionChange-Ereignis. Also in Ereignissen die ein Target mitbringen. Hier kann man einfach prüfen ob das Target innerhalb eines gewünschten Bereichs liegt.
Code: Alles auswählen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Application.StatusBar = "Die Spalte B wurde angewählt"
Else
Application.StatusBar = False
End If
End Sub
https://learn.microsoft.com/de-de/offic ... .intersect
Gruß Mr. K.
- Folgende Benutzer bedankten sich beim Autor xlKing für den Beitrag:
- d'r Bastler
-
- Beiträge: 10
- Registriert: 10. Okt 2022, 21:17
- Kontaktdaten:
Re: Intersect!
Hallo!
Ich habe unter anderem diesen Code gefunden.
Dabei geht es um das Sortieren, wenn sich in Spalte E etwas ändert.
Warum wird hier Intersect verwendet? Ich möchte es verstehen?
Vielleicht wenn sich E10 ändert, E10 ein Teil des Bereiches E4:E20 ist? Bildet sich der Schnittpunkte auch in einer einzigen Spalte also mit den Koordinaten Zeile/Spalte?
Vielleicht möchte mich jemand aufklären.
#Danke!
theTroother
Ich habe unter anderem diesen Code gefunden.
Code: Alles auswählen
Private Sub Worksheet_Change(ByVal target As Range)
If Intersect(target, Range("E4:E20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
loletzte = Cells(Rows.Count, 2).End(xlUp).Row
Range("B3:E" & loletzte).Sort Key1:=Range("C3"), Order1:=xlDescending
Application.EnableEvents = True
End Sub
Warum wird hier Intersect verwendet? Ich möchte es verstehen?
Vielleicht wenn sich E10 ändert, E10 ein Teil des Bereiches E4:E20 ist? Bildet sich der Schnittpunkte auch in einer einzigen Spalte also mit den Koordinaten Zeile/Spalte?
Vielleicht möchte mich jemand aufklären.
#Danke!
theTroother
-
- Beiträge: 52
- Registriert: 30. Mai 2024, 19:42
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 52 Mal
- Kontaktdaten:
Re: Intersect!
Hallo Throoter,
Ja, das ist das Gleiche in grün, nur umgekehrt. Die Zeile If Intersect(Target, Range("E4:E20")) Is Nothing Then Exit Sub sagt aus, dass, wenn Target nicht im Range("E4:E20") liegt (Is Nothing), die Sub beendet wird. wenn du also in E10 etwas neues einträgst wird die Zelle E10 an das Target übergeben. E10 liegt somit im Bereich. Die Sub läuft also weiter. In meinem obigen Beispiel habe ich das Ganze mit Not umgedreht. Also wenn Nicht Is Nothing dann liegt E10 im Bereich und die If-Prüfung ergibt True.
In beiden Beispielen wird als Schnittpunkt durch Intersect nur eine Zelle zurückgegeben. Du kannst aber natürlich zwei oder mehr Beliebige Ranges miteinander vergleichen. z.B. gibt Intersect(Range("C10:J20"),Range("F5:G25")) den Range("F10:G20") als Schnittmenge zurück. Wenn es eine Schnittmenge gibt ist das Ergebnis immer ein Range, dessen Zellen du weiterverarbeiten kannst. Gibt es keine Schnittmenge wird Nothing zurückgegeben, so wie immer wenn ein Objekt nicht existiert. Nothing ist bei Objekten der Standard-Nullwert.
Gruß Mr. K.
Ja, das ist das Gleiche in grün, nur umgekehrt. Die Zeile If Intersect(Target, Range("E4:E20")) Is Nothing Then Exit Sub sagt aus, dass, wenn Target nicht im Range("E4:E20") liegt (Is Nothing), die Sub beendet wird. wenn du also in E10 etwas neues einträgst wird die Zelle E10 an das Target übergeben. E10 liegt somit im Bereich. Die Sub läuft also weiter. In meinem obigen Beispiel habe ich das Ganze mit Not umgedreht. Also wenn Nicht Is Nothing dann liegt E10 im Bereich und die If-Prüfung ergibt True.
In beiden Beispielen wird als Schnittpunkt durch Intersect nur eine Zelle zurückgegeben. Du kannst aber natürlich zwei oder mehr Beliebige Ranges miteinander vergleichen. z.B. gibt Intersect(Range("C10:J20"),Range("F5:G25")) den Range("F10:G20") als Schnittmenge zurück. Wenn es eine Schnittmenge gibt ist das Ergebnis immer ein Range, dessen Zellen du weiterverarbeiten kannst. Gibt es keine Schnittmenge wird Nothing zurückgegeben, so wie immer wenn ein Objekt nicht existiert. Nothing ist bei Objekten der Standard-Nullwert.
Gruß Mr. K.
-
- Beiträge: 10
- Registriert: 10. Okt 2022, 21:17
- Kontaktdaten:
Re: Intersect!
Hi!
Danke,
Das bedeutet ich bekomme mit Intersect() ein Objekt zurück (wegen Nothing), kein Range (das ist dann wohl Variant)? Oder vermische ich da alles?
Denn Range ist doch eine Methode vom Auflistungs"objekt" Worksheet?
Es ist nicht dringend, freue mich dennoch auf eine Antwort!
#bitte, #danke!
theTroother
echt toll hier. Hier wird Zeit genommen und verdammt gut erklärt. SXuper
Danke,
Das bedeutet ich bekomme mit Intersect() ein Objekt zurück (wegen Nothing), kein Range (das ist dann wohl Variant)? Oder vermische ich da alles?
Denn Range ist doch eine Methode vom Auflistungs"objekt" Worksheet?
Es ist nicht dringend, freue mich dennoch auf eine Antwort!
#bitte, #danke!
theTroother
echt toll hier. Hier wird Zeit genommen und verdammt gut erklärt. SXuper

-
- Beiträge: 52
- Registriert: 30. Mai 2024, 19:42
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 52 Mal
- Kontaktdaten:
Re: Intersect!
Hi Nochmal,
Range ist in erster Linie ein Typ. du kannst eine Variable als Range-Objekt deklarieren indem du z.B. Dim rng As Range schreibst. Dieser Variablen kannst du dann eine Zelle zuweisen. Wie bei Objektvariablen üblich musst du dafür das Wörtchen Set verwenden. Also Set rng = Range("A1:B2")
Es gibt aber natürlich auch Methoden und Eigenschaften von anderen Objekten, die den Namen Range haben. In diesem Fall gibt diese Eigenschaft oder Methode ein entsprechendes Range-Objekt zurück.
In diesem Beispiel hat das Worksheet-Objekt "ActiveSheet" eine Eigenschaft Listobjects, die das erste (1) Listobject zurückgibt. Dieses wiederum hat eine Eigenschaft Range, die ein Range-Objekt zurückgibt. Und das hat schließlich die Eigenschaft Address, die letztendlich ausgegeben wird. Das Range-Objekt ist in diesem Fall eine bestimmte Anzahl an Zellen, in denen die intelligente Tabelle abgelegt ist.
Beim Worksheet-Objekt kannst du in der Range-Eigenschaft eine Adresse hinterlegen, die dann das entsprechende Zellenobjekt oder eben mehrere Zellen zurückgibt.
Mit Intersect bekommst du immer ein Range-Objekt, dieses kann aber den Wert Nothing haben. Das bedeutet, dass keine Zelle passt. Du kannst damit dann also nicht weiterarbeiten um z.B. Eigenschaften wie die Adresse aufzurufen.
Gruß Mr. K.
Range ist in erster Linie ein Typ. du kannst eine Variable als Range-Objekt deklarieren indem du z.B. Dim rng As Range schreibst. Dieser Variablen kannst du dann eine Zelle zuweisen. Wie bei Objektvariablen üblich musst du dafür das Wörtchen Set verwenden. Also Set rng = Range("A1:B2")
Es gibt aber natürlich auch Methoden und Eigenschaften von anderen Objekten, die den Namen Range haben. In diesem Fall gibt diese Eigenschaft oder Methode ein entsprechendes Range-Objekt zurück.
Code: Alles auswählen
MsgBox ActiveSheet.ListObjects(1).Range.Address
Beim Worksheet-Objekt kannst du in der Range-Eigenschaft eine Adresse hinterlegen, die dann das entsprechende Zellenobjekt oder eben mehrere Zellen zurückgibt.
Mit Intersect bekommst du immer ein Range-Objekt, dieses kann aber den Wert Nothing haben. Das bedeutet, dass keine Zelle passt. Du kannst damit dann also nicht weiterarbeiten um z.B. Eigenschaften wie die Adresse aufzurufen.
Gruß Mr. K.
-
- Beiträge: 10
- Registriert: 10. Okt 2022, 21:17
- Kontaktdaten:
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste