Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: OnChange auf eine Zelle bezogen

OnChange auf eine Zelle bezogen
03.01.2013 12:04:07
Maximilian
Hallo,
gibt es in VBA die Möglichkeit, ein OnChange Ereignis einer bestimmten Zelle aufzugreifen?
Danke!!!

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
if not Intersect(Target,[A1]) is nothing then
03.01.2013 12:24:54
NoNet
Hallo Maximilian,
das Change-Event bezieht sich immer auf ein komplettes Tabellenblatt.
Man kann jedoch überprüfen, ob bestimmte Zellen im geänderten Bereich liegen - hier wird z.B: überprüft, ob die Zellen A1, B5 oder C7:C10 im geänderten Bereich liegen :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A1,B5,C7:C10]) Is Nothing Then
'hier der Code
End If
End Sub

Gruß, NoNet

Anzeige
Worksheet_Change
03.01.2013 12:29:27
Matthias
Hallo Maximilian
Was ist denn ein: OnChange Ereignis ?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "Die Zelle A1 wurde geändert"
End If
End Sub
Also nur wenn A1 geändert wird
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

OnChange-Ereignis in Excel VBA für spezifische Zellen nutzen


Schritt-für-Schritt-Anleitung

Um ein OnChange-Ereignis in Excel VBA für eine bestimmte Zelle zu implementieren, folge diesen Schritten:

  1. Öffne Excel und lade die Arbeitsmappe, in der du das VBA-Skript verwenden möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Im Projekt-Explorer wähle das Arbeitsblatt aus, für das du das OnChange-Ereignis einrichten möchtest.

  4. Füge den folgenden Code in die Code-Ansicht des Arbeitsblattes ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1")) Is Nothing Then
           MsgBox "Die Zelle A1 wurde geändert"
       End If
    End Sub
  5. Schließe den VBA-Editor und teste die Funktion, indem du die Zelle A1 änderst. Es sollte eine Meldung erscheinen.

Mit diesem Code wird das Worksheet_Change-Ereignis für die Zelle A1 aktiviert und ein Hinweis ausgegeben, wenn sich der Inhalt dieser Zelle ändert.


Häufige Fehler und Lösungen

  • Fehler: Das Ereignis wird nicht ausgelöst.

    • Lösung: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Objekt eingefügt hast. Er sollte nicht in einem Modul oder in ThisWorkbook eingefügt werden.
  • Fehler: Es erscheint keine Meldung.

    • Lösung: Überprüfe, ob die Zelle A1 beim Testen tatsächlich geändert wurde. Der Code reagiert nur auf Änderungen in dieser spezifischen Zelle.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, um mit dem OnChange-Ereignis in VBA zu arbeiten. Eine alternative Methode ist die Verwendung mehrerer Zellen. Hier ein Beispiel:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1,B5,C7:C10")) Is Nothing Then
        MsgBox "Eine überwachte Zelle wurde geändert"
    End If
End Sub

Mit dieser Variante kannst du mehrere Zellen auf Änderungen überwachen. Du kannst die Zellbereiche anpassen, um die für dich relevanten Zellen einzuschließen.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung des excel onchange event:

  1. Farbe ändern: Wenn der Wert in Zelle A1 geändert wird, kannst du die Hintergrundfarbe ändern:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1")) Is Nothing Then
           Range("A1").Interior.Color = RGB(255, 255, 0) ' Gelb
       End If
    End Sub
  2. Berechnung auslösen: Du kannst auch eine Berechnung in einer anderen Zelle auslösen, wenn sich A1 ändert:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("A1")) Is Nothing Then
           Range("B1").Value = Range("A1").Value * 2 ' Verdopple den Wert
       End If
    End Sub

Tipps für Profis

  • Nutze die Application.EnableEvents = False-Anweisung, um zu verhindern, dass das Change-Ereignis rekursiv ausgelöst wird, wenn du in deinem Code Zellen änderst.
  • Dokumentiere deinen Code gut, um bei komplexeren vba onchange-Ereignissen den Überblick zu behalten.
  • Experimentiere mit If Not Intersect(...) für verschiedene Zellvergleiche, um flexiblere Lösungen zu entwickeln.

FAQ: Häufige Fragen

1. Frage
Was ist der Unterschied zwischen Worksheet_Change und Worksheet_SelectionChange?
Antwort: Worksheet_Change wird ausgelöst, wenn der Inhalt einer Zelle geändert wird, während Worksheet_SelectionChange ausgelöst wird, wenn zwischen Zellen gewechselt wird.

2. Frage
Kann ich das OnChange-Ereignis auch für andere Blätter nutzen?
Antwort: Ja, du kannst das Worksheet_Change-Ereignis in jedem Arbeitsblatt verwenden. Du musst den Code jedoch für jedes Arbeitsblatt individuell einfügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige