Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wie funktioniert INTERSECT?

Forumthread: Wie funktioniert INTERSECT?

Wie funktioniert INTERSECT?
06.07.2005 13:14:05
Ben
Hallo Leute,
bin echt verzweifelt.
Nehmen wir an, in Zelle A1 in einem Tabellenblatt steht die Funktion
=7+5
Nun möchte ich verhindern, daß der Anwender die Zelle A1 selektiert. Allgemein: Keine Zelle, die eine Funktion enthält, soll selektiert werden können.
Ich mache diese mit der folgenden Prozedur im selben Arbeitsblatt:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rgForbidden As Range
Set rgForbidden = Cells.SpecialCells(xlCellTypeFormulas)
If Not Application.Intersect(Target, rgForbidden) Is Nothing Then
Application.EnableEvents = False
Range("B2").Select
Application.EnableEvents = True
End If
End Sub


Aber dies funktioniert leider nicht: Wenn ich z.B. die Zelle Z3 selektiere, springt der Cursur nach B2. Das hab' ich aber nicht programmiert.
Nun meine Probleme:
1. Warum funktionert dies nicht? Der VBA-Code ist doch korrekt!
2. Wie kann ich mit Intersect verhindern, daß Zellen mit Funktionen (egal wo) selektiert werden?
Irgendwie kapiere ich die Logik von Select nicht - aber genau die will ich verstehen.
Für Hinweise zu meinen Problemchen wäre ich Euch sehr verbunden.
Beste Grüße, Ben.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie funktioniert INTERSECT?
06.07.2005 13:19:02
Coach
Hallo Ben,
einfacher wäre in Deine m Fall
if target.hasformula then ...
Gruß Coach
AW: Wie funktioniert INTERSECT?
06.07.2005 13:28:54
Ben
Hallo Coach,
danke für Deine Antwort und Deinen Vorschlag - aber die Funktionen sind nur ein Beispiel.
Ich will kapieren, wie man das mit INTERSECT hinkriegt.
Gruß, Ben.
AW: Wie funktioniert INTERSECT?
06.07.2005 13:54:38
Jan
Hi,
wenn Z3 eine Formel enthält, ist das doch ok. Intersect bedeutet nichts weiter, als
dass sich die selektierte Zelle im definierten Bereich befindet, bei dir also
rgForbidden.
mfg Jan
Anzeige
AW: Wie funktioniert INTERSECT?
06.07.2005 15:34:23
u_
Hallo,
warum auch immer, so klappt es:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo errHandler
Application.EnableEvents = False
Dim rgForbidden As Range
Set rgForbidden = Cells.SpecialCells(xlCellTypeFormulas)
If Not Application.Intersect(Target, rgForbidden) Is Nothing Then
Range("B2").Select
End If
errHandler:
Application.EnableEvents = True
End Sub
Gruß
Geist ist geil!
Anzeige
AW: Wie funktioniert INTERSECT?
07.07.2005 09:44:23
Ben
Hallo u_,
danke sehr für Deinen VBA-Code: funzt prima - obwohl ich's immer noch nicht kapiere.
Wie auch immer: danke und für Dich weiterhin alles Gute!
Gruß, Ben.
;
Anzeige

Infobox / Tutorial

INTERSECT in Excel VBA: Anwendung und Lösungen


Schritt-für-Schritt-Anleitung

Um die Intersect-Funktion in Excel VBA zu verwenden, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Wähle das Arbeitsblatt aus: Doppelklicke im Projektfenster auf das Arbeitsblatt, in dem du die Funktion verwenden möchtest.

  3. Füge den Code hinzu: Kopiere den folgenden Code in das Codefenster des Arbeitsblatts:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim rgForbidden As Range
        Set rgForbidden = Cells.SpecialCells(xlCellTypeFormulas)
    
        If Not Application.Intersect(Target, rgForbidden) Is Nothing Then
            Application.EnableEvents = False
            Range("B2").Select
            Application.EnableEvents = True
        End If
    End Sub
  4. Teste die Funktion: Wechsel zurück zu Excel und versuche, eine Zelle mit einer Formel auszuwählen. Der Cursor sollte automatisch auf Zelle B2 springen.


Häufige Fehler und Lösungen

Fehler 1: Der Cursor springt immer zu B2, egal welche Zelle ausgewählt wird.

Lösung: Stelle sicher, dass der EnableEvents-Schutz korrekt gesetzt ist. Es ist wichtig, dass Application.EnableEvents auf False gesetzt wird, bevor du die Zelle auswählst, und danach wieder auf True.

Fehler 2: Intersect gibt immer Nothing zurück.

Lösung: Stelle sicher, dass die Zelle, die du auswählst, tatsächlich im Bereich rgForbidden enthalten ist. Verwende Debug.Print innerhalb deines Codes, um zu überprüfen, ob die Bedingungen erfüllt sind.


Alternative Methoden

Wenn du die Intersect-Funktion vermeiden möchtest, kannst du auch die HasFormula-Eigenschaft verwenden:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.HasFormula Then
        Application.EnableEvents = False
        Range("B2").Select
        Application.EnableEvents = True
    End If
End Sub

Diese Methode ist einfacher und benötigt keine Verwendung der Application.Intersect-Funktion.


Praktische Beispiele

Hier sind einige zusätzliche Beispiele, die zeigen, wie du die Intersect-Funktion in verschiedenen Szenarien verwenden kannst:

  1. Mehrere Bereiche überprüfen:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim rgForbidden As Range
        Set rgForbidden = Union(Range("A1:A10"), Range("C1:C10"))
    
        If Not Application.Intersect(Target, rgForbidden) Is Nothing Then
            Range("B2").Select
        End If
    End Sub
  2. Bestimmte Zellwerte überprüfen:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("D1:D10")) Is Nothing Then
            If Target.Value > 100 Then
                MsgBox "Der Wert ist größer als 100!"
            End If
        End If
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge eine Fehlerbehandlungsroutine hinzu, um unerwartete Fehler zu vermeiden.

    On Error GoTo errHandler
    ' Dein Code hier
    errHandler:
    Application.EnableEvents = True
  • Optimierung der Performance: Deaktiviere ScreenUpdating und Calculation, während dein Code läuft, um die Performance zu verbessern:

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ' Dein Code hier
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

FAQ: Häufige Fragen

1. Was ist die Application.Intersect-Funktion? Die Application.Intersect-Funktion überprüft, ob zwei Bereiche sich überschneiden und gibt den Schnittbereich zurück.

2. Wie kann ich verhindern, dass eine bestimmte Zelle ausgewählt wird? Du kannst dies erreichen, indem du die Worksheet_SelectionChange-Ereignisprozedur verwendest und Application.Intersect nutzt, um zu überprüfen, ob die ausgewählte Zelle in einem bestimmten Bereich liegt.

3. Was tun, wenn mein Code nicht funktioniert? Überprüfe, ob EnableEvents korrekt eingestellt ist und ob der Zielbereich (Target) tatsächlich im definierten Bereich enthalten ist. Nutze Debug.Print, um den Ablauf zu überwachen.

4. Ist Intersect in allen Excel-Versionen verfügbar? Ja, die Intersect-Funktion ist in allen modernen Excel-Versionen verfügbar, die VBA unterstützen.

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