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

SelectionChange - nur bei einzelnen Zellen

Forumthread: SelectionChange - nur bei einzelnen Zellen

SelectionChange - nur bei einzelnen Zellen
22.09.2003 19:12:40
Christoph
Hallo zusammen,
ich möchte eine Worksheet_SelectionChange-Anweisung nur im Bereich C8 bis Q8 ausführen. Das bekommen ich noch hin(siehe unten).
Doch nun zu meiner Frage:
Wenn ich in diesem Bereich mehr als eine Zelle markiere (also z.B. C8 bis E8), dann soll die SelectionChange Anweisung ebenfalls nicht ausgeführt werden, sondern eben nur, wenn eine einzelne Zelle aus dem Bereich markiert ist.

wie geht das?
kann mir jemand helfen?
schon vorab vielen Dank
Gruß
Christoph


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row <> 8 Then Exit Sub
If Target.Column < 3 Then Exit Sub
If Target.Column > 17 Then Exit Sub
j = Target.Column                             'das ist nur ein Fehlversuch
If Target.Range <> Cells(8, j) Then Exit Sub  'Objekt nicht definiert etc.
Call Bearbeiten
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SelectionChange - nur bei einzelnen Zellen
22.09.2003 19:30:55
heinz
If InStr(Target.Address, ":") > 0 Then
MsgBox "mehrere Zellen"
Else: MsgBox "eine Zelle"
End If
AW: SelectionChange - nur bei einzelnen Zellen
22.09.2003 19:57:39
Nepumuk
Hallo Christoph,
so geht's:


Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 And Not Application.Intersect(Target, Range("C8:Q8")) Is Nothing Then
'        Dein Code
End If
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
merci!
22.09.2003 20:16:23
Christoph
Hallo Nepumuk,
deine Lösung "schrumpft" die ganzen "If...Then Exit Sub"-Formulierungen auf eine Zeile zusammen. Sehr schön.
vielen Dank, das klappt hervorragend.
Gruß
Christoph
Danke - das ist Prima
22.09.2003 20:08:04
Christoph
Hallo Heinz,
vielen Dank, das klappt hervorragend. Ich hatte schon befürchtet, dass es hierzu keine Lösung gibt, da sobald eine Zelle angesprochen wird, die SelectionChange-Anweisung aktiviert wird. Aber offensichtlich gibt es immer noch einen Befehl (einen? - hunderte!), den ich noch nicht kenne.

was würde ich ohne dieses Forum machen
Gruß
Christoph
Anzeige
;
Anzeige

Infobox / Tutorial

Auswahländerungen in Excel: Mit VBA nur auf einzelne Zellen reagieren


Schritt-für-Schritt-Anleitung

Um eine Worksheet_SelectionChange-Anweisung in Excel nur für einzelne Zellen im Bereich C8 bis Q8 auszuführen, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Anweisung nur aktiviert wird, wenn eine einzige Zelle ausgewählt ist.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Wähle das entsprechende Arbeitsblatt im Projekt-Explorer.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 And Not Application.Intersect(Target, Range("C8:Q8")) Is Nothing Then
        ' Dein Code hier
    End If
End Sub
  1. Ersetze den Kommentar ' Dein Code hier durch den gewünschten Code, der ausgeführt werden soll, wenn eine einzelne Zelle ausgewählt wird.

Häufige Fehler und Lösungen

  • Problem: Die Anweisung wird auch bei der Auswahl mehrerer Zellen aktiviert.

    • Lösung: Stelle sicher, dass Du Target.Count = 1 im Code verwendest, um nur auf die Auswahl einer einzelnen Zelle zu reagieren.
  • Problem: Der Code funktioniert nicht, wenn sich die Zelle nicht im richtigen Bereich befindet.

    • Lösung: Nutze Application.Intersect, um zu überprüfen, ob sich die ausgewählte Zelle im Bereich C8 bis Q8 befindet.

Alternative Methoden

Eine alternative Methode zur Umsetzung der selection change vba-Funktionalität ist die Verwendung von Worksheet_Change. Diese Methode wird aktiviert, wenn sich der Inhalt einer Zelle ändert, jedoch nicht bei der Auswahl:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("C8:Q8")) Is Nothing Then
        ' Dein Code hier
    End If
End Sub

Diese Methode eignet sich, wenn Du auf Änderungen in den Zellen reagieren möchtest, aber nicht direkt auf die Auswahländerung.


Praktische Beispiele

Ein praktisches Beispiel für den oben genannten Code könnte das Anzeigen einer Nachricht sein, wenn eine Zelle ausgewählt wird:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 And Not Application.Intersect(Target, Range("C8:Q8")) Is Nothing Then
        MsgBox "Du hast die Zelle " & Target.Address & " ausgewählt."
    End If
End Sub

Dieser selection change-Code informiert den Benutzer über die gerade ausgewählte Zelle, was besonders nützlich sein kann, um den Überblick zu behalten.


Tipps für Profis

  • Nutze With-Anweisungen, um den Code sauberer und effizienter zu gestalten.
  • Experimentiere mit verschiedenen Bedingungen in der selectionchange-Anweisung, um spezifische Anforderungen zu erfüllen.
  • Halte Deinen Code modular und gut kommentiert, um die Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich die selectionchange-Anweisung für mehrere Bereiche aktivieren?
Du kannst einfach weitere Bedingungen mit Application.Intersect hinzufügen oder die Bereiche in einer Union-Anweisung zusammenfassen.

2. Was ist der Unterschied zwischen SelectionChange und Change?
SelectionChange wird ausgelöst, wenn die Auswahl einer Zelle wechselt, während Change aktiviert wird, wenn der Inhalt einer Zelle geändert wird.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die oben genannten Beispiele funktionieren in den meisten aktuellen Excel-Versionen, 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