Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ich kapiere INTERSECT nicht!

Forumthread: Ich kapiere INTERSECT nicht!

Ich kapiere INTERSECT nicht!
28.11.2004 21:09:37
Edwin
Hallo,
auf meine letzte Anfrage (hier hatte ich mich leider im Level vertan) bekam ich folgende Antwort.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Intersect(Target, [F8:K46]) Is Nothing Then Exit Sub MsgBox "Test1" End Sub
Der Befehl funktioniert prima.
Der Befehl "Intersect" ist mir aber leider gänzlich unbekannt und ich finde in meinen Büchern hierzu auch keinerlei Beschreibung.
Ich würde den obigen Befehl um folgendes gerne ergänzen:
E1:E2 dann MsgBox "Test2"
F1 dann MsgBox "Test3"
Geht das?
Vielen Dank für Eure Hilfe.
Gruß
Edwin
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich kapiere INTERSECT nicht!
Ramses
Hallo
du must nich in Büchern schauen,... die VBA-OnlineHilfe reicht auch ;-)
Suchbegriff "Intersect"
-----------------------
Intersect (Methode)
Diese Methode gibt ein Range-Objekt zurück, das die rechteckige Schnittmenge von zwei oder mehreren Bereichen darstellt.
Ausdruck.Intersect(Arg1, Arg2, ...)
Ausdruck Optional. Ein Ausdruck, der ein Application-Objekt zurückgibt.
Arg1, Arg2, ... Erforderlicher Range-Wert. Die Schnittmengenbereiche. Hier müssen mindestens zwei Range-Objekte angegeben werden.
Beispiel
Im folgenden Beispiel wird die Schnittmenge der benannten Bereiche rg1 und rg2 in Sheet1 markiert. Wenn sich die beiden Bereiche nicht überschneiden, wird eine Meldung angezeigt.
Worksheets("Sheet1").Activate
Set isect = Application.Intersect(Range("rg1"), Range("rg2"))
If isect Is Nothing Then
MsgBox "Ranges do not intersect"
Else
isect.Select
End If
----------------
Gruss Rainer
Anzeige
AW: Ich kapiere INTERSECT nicht!
28.11.2004 21:17:50
Hajo_Zi
Hallo Edwin,
hast Du schon mal in die VBA Hilfe geschaut?
Für Deine Variante mußt Du mit zwei vergleichen arbeiten.
If Not Intersect(Target, [E1:E2]) Is Nothing Then
MsgBox "Test1"
elseif Not Intersect(Target, [F1]) Is Nothing Then
MsgBox "Test2"
End If
mal ohne Testung
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: Ich kapiere INTERSECT nicht!
Edwin
Hallo Ramses,
die Online-Hilfe hatte ich angeschaut, aber trotzdem nicht kapiert. Bin einfach zu sehr Laie.
Hallo Hajo,
Du hast mir, ich weiß nicht wie oft schon, mal wieder super geholfen. Oberedel!!!
Jetzt bin ich wieder einen irre Schritt weiter.
Vielen Dank!
Gruß
Edwin
Anzeige
AW: Ich kapiere INTERSECT nicht!
Jens_Pu
Hallo Edwin,
versuchs mal so:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Not Intersect(Target, [E1:E2]) Is Nothing Then MsgBox "Test2" If Not Intersect(Target, [F1]) Is Nothing Then MsgBox "Test3" If Intersect(Target, [F8:K46]) Is Nothing Then Exit Sub MsgBox "Test1" End Sub
Gruß Jens
Anzeige
AW: Ich kapiere INTERSECT nicht!
Edwin
Hallo Jens,
das funktioniert auch wunderbar.
Damit ich Intersect vielleicht noch öfter benützen kann (ich habe Arg1, Arg2, ... nicht verstanden), hier noch eine ergänzende Frage.
wenn E1:E2 und F1 dann MsgBox "Test"
wie muss dann der Befehl lauten?
Gruß
Edwin
AW: Ich kapiere INTERSECT nicht!
28.11.2004 22:33:36
Jens_Pu
Hallo Erwin,
vielleicht kannst Du Dir so besser vorstellen, was Intersect macht:
 
 ABCDE
1     
2     
3     
4     
5     
6     
7     
8     
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
In diesem Fall würde Intersect([B2:C5], [C5:D7]) als Ergebnis C5 liefern.
So etwas klarer?
Gruß Jens
Anzeige
;
Anzeige

Infobox / Tutorial

INTERSECT in Excel VBA verstehen und anwenden


Schritt-für-Schritt-Anleitung

Um die Intersect-Methode in Excel VBA zu verwenden, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf deinen Workbook-Namen im Projektfenster und wähle Einfügen > Modul.
  3. Schreibe den Code:

    • Verwende den folgenden Beispielcode, um die Intersect-Methode zu implementieren:
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
       If Not Intersect(Target, [F8:K46]) Is Nothing Then
           MsgBox "Test1"
       ElseIf Not Intersect(Target, [E1:E2]) Is Nothing Then
           MsgBox "Test2"
       ElseIf Not Intersect(Target, [F1]) Is Nothing Then
           MsgBox "Test3"
       End If
    End Sub
  4. Teste den Code:

    • Wechsle zurück zu Excel, wähle verschiedene Zellen in dem definierten Bereich aus und beobachte die Meldungen.

Häufige Fehler und Lösungen

  • Fehler: If Not Intersect(Target, range) Is Nothing funktioniert nicht:

    • Lösung: Stelle sicher, dass der Target-Bereich korrekt definiert ist. Prüfe auch, ob der range-Bereich existiert.
  • Fehler: Intersect gibt nichts zurück:

    • Lösung: Überprüfe, ob sich die Bereiche tatsächlich überschneiden. Verwende MsgBox für Debugging-Zwecke.

Alternative Methoden

Wenn du die Intersect-Methode nicht verwenden möchtest, gibt es Alternativen:

  • Verwendung von Application.Intersect:

    Dim isect As Range
    Set isect = Application.Intersect(Target, Range("F8:K46"))
    If Not isect Is Nothing Then
      MsgBox "Test1"
    End If
  • Manuelle Überprüfung der Zellwerte:

    • Du kannst auch die Zellwerte manuell überprüfen, was jedoch weniger elegant ist als die Verwendung von Intersect.

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von Intersect:

  1. Highlighting von Zellen:

    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
       If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
           Target.Interior.Color = RGB(255, 255, 0) ' Gelb
       End If
    End Sub
  2. Spezifische Aktionen basierend auf der Auswahl:

    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
       If Not Intersect(Target, Range("B1:B5")) Is Nothing Then
           MsgBox "Du hast einen Bereich in Spalte B ausgewählt."
       End If
    End Sub

Tipps für Profis

  • Verwende If Not Intersect für klare Bedingungen: Das ist nützlich, wenn du mehrere Bereiche gleichzeitig überprüfen möchtest.

  • Nutze Application.Intersect für mehr Flexibilität: Diese Methode kann auch in anderen VBA-Anwendungen verwendet werden.

  • Debugging: Füge Debug.Print-Befehle hinzu, um den Status von Variablen und Bereichen während der Ausführung zu sehen.


FAQ: Häufige Fragen

1. Was ist Intersect in Excel VBA? Intersect ist eine Methode, die die Schnittmenge von zwei oder mehreren Zellbereichen zurückgibt. Wenn die Bereiche sich nicht überschneiden, gibt sie Nothing zurück.

2. Wie funktioniert If Not Intersect? Mit If Not Intersect(Target, range) Is Nothing kannst du überprüfen, ob der Target-Bereich mit einem bestimmten Bereich überlappt. Dies ist besonders nützlich in Ereignisprozeduren wie Worksheet_SelectionChange.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige