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

VBA "...Worksheet_change..." funktioniert nicht

Forumthread: VBA "...Worksheet_change..." funktioniert nicht

VBA "...Worksheet_change..." funktioniert nicht
21.12.2016 01:15:31
Hansen
Hallo,
ich bin mit meinem Latein am Ende, darum hoffe ich das mir hier geholfen werden kann. Dafür schon mal vielen Dank!
Wenn zwischen den Zellen in denen ich Eingaben tätige und einer ausgeblendeten Zeile am unteren Ende (mit dem Schlüsselwort "Stop") der Tabelle keine leere Zelle (für Eingaben) mehr ist, wird besagte (Ausgeblendete) Zeile kopiert und genau darüber ("entleert" und eingeblendet) eingefügt.
Dafür habe ich, als VBA Laie, folgenden Code geschrieben:

Sub Test()
Dim Z1 As Integer, Z2 As Integer
For Z2 = 1 To 100
For Z1 = 1 To 1000
If Cells(Z1, Z2) = "" Then Exit For
If Cells(Z1, Z2) = "Stop" Then
Rows(Z1).Select
Selection.Copy
Selection.Insert Shift:=xlDown
Rows(Z1).EntireRow.Hidden = False
Rows(Z1).ClearContents
Cells(Z1, Z2).Select
Exit For
End If
Next Z1
Next Z2
End Sub

Das ganze funktioniert soweit auch ganz gut (geht sicher auch einfacher...bin halt am üben :D), aber ich würde gerne dass, das Makro bei jeder neuen Eingabe in meiner Tabelle automatisch ausgeführt wird.
Jedoch Stürzt Excel fast jedesmal ab wenn ich "...Worksheet_Change(ByVal Target As Range)" benutze!?
Hoffe jemand kann mir sagen wo der Fehler liegt :/
Vielen Dank! :)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA "...Worksheet_change..." funktioniert nicht
21.12.2016 09:50:00
guenni
Deine Aktionen wollen Worksheet_change auslösen, da sie Zellen ändern
Du musst also am Anfang application.enableevents = false setzen, und am Schluß wieder auf true
Gruß,
Günther
AW: VBA "...Worksheet_change..." funktioniert nicht
21.12.2016 10:38:05
Hansen
Perfekt, jetzt klappt es! Irgendetwas in der Richtung hatte ich auch vermutet nur nichts passendes gefunden.
Vielen Dank für die schnelle Antwort und meine Rettung! :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Automatisierung mit VBA: Nutzung von Worksheet_Change in Excel


Schritt-für-Schritt-Anleitung

Um VBA mit der Worksheet_Change-Ereignisprozedur in Excel zu nutzen, befolge diese Schritte:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das entsprechende Arbeitsblatt im Projektfenster aus, wo du die Änderungen verfolgen möchtest.

  3. Füge folgende Codezeilen ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Application.EnableEvents = False
       ' Hier deinen Code einfügen
       Application.EnableEvents = True
    End Sub
  4. Ersetze den Kommentar mit deinem spezifischen VBA-Code, der automatisch bei Änderungen ausgeführt werden soll.

  5. Speichere das Arbeitsblatt und teste die Eingaben, um sicherzustellen, dass der Code wie gewünscht funktioniert.


Häufige Fehler und Lösungen

  • Worksheet_change funktioniert nicht: Wenn Excel abstürzt oder das Ereignis nicht reagiert, stelle sicher, dass du Application.EnableEvents = False zu Beginn der Subroutine hinzufügst. Dies verhindert, dass das Ereignis selbst erneut ausgelöst wird, was zu einer Endlosschleife führen kann.

  • Fehlermeldungen: Überprüfe den VBA-Code auf Syntaxfehler oder logische Fehler. Achte darauf, dass alle Variablen korrekt deklariert sind.


Alternative Methoden

Falls du mit Worksheet_Change Probleme hast, kannst du auch die Worksheet_SelectionChange-Ereignisprozedur verwenden. Diese wird ausgelöst, wenn der Benutzer eine andere Zelle auswählt:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   ' Hier deinen Code einfügen
End Sub

Diese Methode kann nützlich sein, wenn die Änderungen in den Zellen nicht direkt überwacht werden müssen.


Praktische Beispiele

Ein einfaches Beispiel für die Nutzung von Worksheet_Change könnte so aussehen:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        MsgBox "Zelle A1 wurde geändert!"
    End If
End Sub

Dieses Beispiel zeigt eine Nachricht, wenn der Inhalt von Zelle A1 geändert wird. Du kannst diese Logik erweitern, um komplexere Aufgaben zu erledigen.


Tipps für Profis

  • Debugging: Nutze die Debug.Print-Anweisung, um Werte während der Ausführung in das Immediate-Fenster zu drucken. Dies hilft dir, den Status deiner Variablen zu überwachen und Fehler zu identifizieren.

  • Performance-Optimierung: Vermeide unnötige Berechnungen oder Operationen innerhalb der Worksheet_Change-Prozedur, um die Performance zu verbessern, besonders bei großen Datenmengen.

  • Dokumentation: Kommentiere deinen Code ausführlich, um später leichter nachvollziehen zu können, was jeder Teil des Codes bewirken soll.


FAQ: Häufige Fragen

1. Warum stürzt Excel ab, wenn ich Worksheet_Change verwende? Das passiert häufig, weil das Ereignis selbst weitere Änderungen auslöst. Stelle sicher, dass du Application.EnableEvents = False zu Beginn deiner Prozedur setzt.

2. Kann ich mehrere Zellen gleichzeitig überwachen? Ja, du kannst dies tun, indem du die Intersect-Funktion nutzt, um mehrere Bereiche zu überprüfen.

3. Welche Excel-Version benötige ich für VBA? VBA ist in den meisten Desktop-Versionen von Excel ab Excel 97 bis hin zu den neuesten Versionen verfügbar. In Excel Online ist VBA nicht verfügbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige