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

Worksheet_Change funktioniert nicht

Forumthread: Worksheet_Change funktioniert nicht

Worksheet_Change funktioniert nicht
24.10.2005 21:36:35
Simon
hallo Zusammen
hab mal wieder ein kleines Problem,
will mit einem Worksheet_Change Ereignis in einem Tabellenblatt erreichen das die eingaben in einemBestimmten Bereich immer groß geschrieben werden,
hab auch schon nen passenden code, denke ich, nur irgendwie reagiert gar nichts keine Fehlermeldung, einfach nichts,
an was könnte das denn liegen?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("c2:c100")
If Not Intersect(Target, Bereich) Is Nothing Then
Target = UCase(Target)
End If
End Sub

bedanke mich schon mal für eure mühe
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change funktioniert nicht
24.10.2005 21:41:09
Hajo_Zi
Hallo Simon,
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Range("c2:c100")
If Not Intersect(Target, Bereich) Is Nothing Then
Application.EnableEvents = False
Target = UCase(Target)
Application.EnableEvents = True
End If
Set Bereich = Nothing
End Sub

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 SP2.


Anzeige
AW: Worksheet_Change funktioniert nicht
24.10.2005 21:42:01
Matthias
Hallo Simon,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, z As Range
Set Bereich = Intersect(Target, Range("c2:c100"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each z In Bereich
z.Value = UCase(z.Value)
Next z
Application.EnableEvents = True
End If
End Sub

Gruß Matthias
Anzeige
AW: Worksheet_Change funktioniert nicht
24.10.2005 21:51:15
Simon
Danke für die schnellen antworten,
habe beide codes ausprobiert,es gibt aber keine reaktion, auch wenn ich absichtlich einen fehler rein mache,
ist da irgend etwas falsch eingestellt?
AW: Worksheet_Change funktioniert nicht
24.10.2005 21:59:43
Matthias
Hallo Simon,
gib mal ins Direktfenster im VB-Editor ein:
Application.EnableEvents = True
oder beende Excel und starte es neu.
Gruß Matthias
Anzeige
AW: Worksheet_Change funktioniert nicht
24.10.2005 22:05:59
simon
excel neu gestartet und schon gehts ist ja cool.
Wie kann denn eigentlich so was passiern? oder lässt sich der Fehler nicht erklären?
Besten dank Trotzdem
AW: Worksheet_Change funktioniert nicht
24.10.2005 22:10:41
Matthias
Hallo Simon,
das passiert, wenn irgendein Code die Events abschaltet und nicht mehr ein, z.B. nach einem Laufzeitfehler. Sicherheitshalber (auch wenn ich nicht sehe, wie im folgenden Code ein Laufzeitfehler auftreten kann, aber man weiß ja nie) sollte man deshalb auch schreiben:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, z As Range
On Error GoTo errhandler
Set Bereich = Intersect(Target, Range("c2:c100"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
For Each z In Bereich
z.Value = UCase(z.Value)
Next z
End If
errhandler:
Application.EnableEvents = True
End Sub

Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Worksheet_Change Ereignis in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um das Worksheet_Change Ereignis in Excel VBA korrekt zu implementieren, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Doppelklicke auf das gewünschte Arbeitsblatt, in dem du das Ereignis implementieren möchtest.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Bereich As Range
       Set Bereich = Range("c2:c100")
       If Not Intersect(Target, Bereich) Is Nothing Then
           Application.EnableEvents = False
           Target = UCase(Target)
           Application.EnableEvents = True
       End If
    End Sub
  4. Schließe den VBA-Editor und teste die Eingaben im Bereich C2:C100.

Falls der Code nicht funktioniert, könnte es an den Application.EnableEvents liegen, die möglicherweise deaktiviert sind.


Häufige Fehler und Lösungen

  • Worksheet_Change funktioniert nicht: Wenn das Ereignis nicht ausgelöst wird, überprüfe, ob Application.EnableEvents auf True gesetzt ist. Du kannst dies im Direktfenster des VBA-Editors testen:

    Application.EnableEvents = True
  • Code wird nicht ausgeführt: Stelle sicher, dass du auf das richtige Arbeitsblatt im VBA-Editor zugreifst. Außerdem kann ein Laufzeitfehler im Code dazu führen, dass das Ereignis nicht mehr ausgelöst wird. Füge zur Fehlerbehandlung folgenden Code hinzu:

    On Error GoTo errhandler
    ...
    errhandler:
       Application.EnableEvents = True

Alternative Methoden

Falls das Worksheet_Change Ereignis nicht wie gewünscht funktioniert, kannst du alternativ die Worksheet_SelectionChange Methode verwenden, um z.B. bei Auswahländerungen eine Aktion auszuführen. Hier ist ein Beispiel:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("c2:c100")) Is Nothing Then
        ' Deine Logik hier
    End If
End Sub

Diese Methode wird ausgeführt, wenn der Benutzer einen anderen Zellbereich auswählt.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Worksheet_Change Ereignis nutzen kannst:

  1. Inhalt in Großbuchstaben umwandeln:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Bereich As Range
       Set Bereich = Range("c2:c100")
       If Not Intersect(Target, Bereich) Is Nothing Then
           Application.EnableEvents = False
           For Each z In Target
               z.Value = UCase(z.Value)
           Next z
           Application.EnableEvents = True
       End If
    End Sub
  2. Formatierung ändern, wenn sich der Inhalt ändert:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("c2:c100")) Is Nothing Then
           Target.Font.Bold = True
       End If
    End Sub

Tipps für Profis

  • Verwende Application.EnableEvents: Schalte es während der Ausführung deines Codes aus und wieder ein, um zu verhindern, dass dein Code rekursiv aufgerufen wird.
  • Debugging: Nutze das Direktfenster, um Variablenwerte zu überprüfen und sicherzustellen, dass dein Code wie gewünscht funktioniert.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass Application.EnableEvents immer wieder aktiviert wird, selbst wenn ein Fehler auftritt.

FAQ: Häufige Fragen

1. Warum wird mein Worksheet_Change Ereignis nicht ausgelöst? Es kann sein, dass Application.EnableEvents auf False gesetzt ist. Setze es auf True, um das Ereignis zu aktivieren.

2. Was kann ich tun, wenn ich mehrere Zellen gleichzeitig ändern möchte? Verwende eine Schleife, um über die geänderten Zellen zu iterieren, wie im Beispiel oben gezeigt.

3. Ist das Worksheet_Change Ereignis in allen Excel-Versionen verfügbar? Ja, das Worksheet_Change Ereignis ist in allen modernen Excel-Versionen verfügbar, einschließlich Excel 2003 und späteren Versionen.

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