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

Forumthread: Worksheet Change funktioniert nicht

Worksheet Change funktioniert nicht
01.06.2023 13:21:55
Katharina Gamer

Hallo Zusammen,

ich habe letzte Woche in meiner Excel innerhalb VBA ein paar Codes in Worksheet_Change hinterlegt (bspw. sollen bei einem bestimmten Wert in einer Zelle eine bestimmte Zeile ausgeblendet werden). Jetzt habe ich die Datei heute wieder geöffnet, aber alles was hinter Worksheet_Change hinterliegt, wird einfach nicht ausgeführt (er blendet die Zeilen nicht aus). Kann mir jemand sagen, wieso das so ist? Ich bekomme beim Durchlauf keine Fehlermeldung...


Liebe Grüße
Katharina

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 13:24:06
Jowe
Hallo,
hast Du es auch mit "Worksheet_SelectionChange(ByVal Target As Range)"
versucht?


AW: Worksheet Change funktioniert nicht
01.06.2023 13:26:38
Katharina Gamer
Das ändert leider nichts :-(
Muss man das Worksheet_Change oder Worksheet_SelectionChange irgendwie aktivieren beim Öffnen?


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 13:32:58
Daniel
Hi
der Speicherort, von dem du die Datei geöffnet hast, ist noch nicht als Vertrauenswürdig eingestuft und Excel hat dich daher gefragt, ob es Makros ausführen soll oder nicht. Das hast du übersehen oder mit nein beantwortet.
das wäre das, was mir mit deiner Beschreibung so als erstes einfallen würde.

andere Möglichkeiten wären, du hast vorher in Excel oder VBA was gemacht und dabei den Entwurfsmodus aktivert oder der Befehl Application.EnableEvents = False wurde ausgeführt und kein ... = true hinterher.

Wenns davon nichts ist, müsstest du mal die Datei hochladen.

Gruß Daniel


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 13:44:10
Katharina Gamer
Hallo Daniel,

danke für Deine Antwort :-)
also die ersten beiden Sachen kann ich leider ausschließen. Zum einen funktionieren alle Codes außerhalb der Change Methode (ich habe zahlreiche Reset Buttons drin, die funktionieren einwandfrei) und zum anderen ist der Entwurfsmodus nicht ausgewählt.

Ich habe innerhalb dieser Datei einen Speicherbutton erstellt mit folgendem Code:

Sub Speichern()

    With ActiveSheet
    With .CommandButton83
    .Top = Rows(9).Top: .Left = Columns("F").Left
    .Width = 218: .Height = 70
    End With
    End With
    
    If Range("B7").Value = "" Or Range("B10").Value = "" Or Range("B12").Value = "" Or Range("D92").Value = "" Then
        MsgBox ("Bitte füllen Sie für den Speichervorgang die Kunden-, die Artikel und die Versionsnummer sowie die Baureihe der MLT Trommel aus")

    Else
       'Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="P:\Auslegungen_Spezifikation\" & Range("B13") & ".xlsx", FileFormat:=xlOpenXMLWorkbook
        ActiveWorkbook.SaveAs Filename:="P:\Auslegungen_Spezifikation\Auslegung_SpezifikationmitMakros\" & Range("C4") & "_" & Range("B13") & "_" & Range("D92") & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
        
        

    End If
    
    
End Sub
Ansonsten wird in einem Modul von meinem Vorgänger Application.Range("A1").Value öfter benutzt.

Kann es einen von beiden Ereignissen liegen?

Danke für Deine Hilfe :-)


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 15:21:24
Daniel
von welchem Speicherort hast du denn die Datei geöffnet?
"P:\Auslegungen_Spezifikation\"
oder
"P:\Auslegungen_Spezifikation\Auslegung_SpezifikationmitMakros\"
bzw welche Datei hast du geöffnet, die .xlsx oder die .xlsm?

Gruß Daniel


AW: Worksheet Change funktioniert nicht
01.06.2023 15:23:56
Katharina Gamer
Die Datei liegt im Moment noch auf keinem der beiden Speicherplätze, sondern an einem dritten Platz. Abgespeichert ist die Datei mit Makros.

Und das Application.displayAlerts ist eigentlich nicht ausgeblendet

Grüße


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 14:42:15
onur
Du weisst schon, dass das CHANGE-Event nur ausgelöst wird, wenn die Zelle MANUELL verändert wurde und nicht durch Änderung des Ergebnisses einer Formel?


AW: Worksheet Change funktioniert nicht
01.06.2023 14:43:49
Katharina Gamer
ja, das weiß ich und hab ich berücksichtigt :-)
gibts eigentlich ein Event das auch ausgelöst wird, wenn sich das Ergebnis der Formel ändert?


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 14:48:04
onur
NEIN. Aber du kannst ja die die Bezüge der Formel überwachen (wenn die nicht auch noch durch Formeln berechnet werden).
Wenn z.B. die Formel lautet
= A1 + A2
Einfach A1 und/oder A2 überwachen.


AW: Worksheet Change funktioniert nicht
01.06.2023 15:08:40
Katharina Gamer
die Bezüge werden auch durch Formeln ausgefüllt :-/


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 15:10:52
onur
Geht es nur um EINE Zelle, die überwacht werden soll?


AW: Worksheet Change funktioniert nicht
01.06.2023 15:11:30
Katharina Gamer
ne, um mehrere


AW: Worksheet Change funktioniert nicht
01.06.2023 15:13:35
onur
Sehr viele?


Anzeige
AW: Worksheet Change funktioniert nicht
01.06.2023 15:14:33
JoWE
zeig' doch bitte Dein komplettes Worksheet Change Makro


AW: Worksheet Change funktioniert nicht
01.06.2023 16:52:35
Daniel
nein.
es gibt das Calculate-Event, das ausgeführt wird wenn in dem Tabellenblatt irgendeine Formel neu berechnet wird.
du kannst dann aber nicht auslesen, welche Zellen neu berechnet wurden und welche sich dabei tatsächlich geändert haben.

um einzelne Zellen mit Formel auf Änderung zu überwachen bzw ein Makro auszulösen, wenn sich das Formelergebnis ändert, gibt es einen Workaround:
1. Textbox aus den ActiveX-Steuerelementen anlegen
2. Textbox mit der Formelzelle verknüpfen (Zelladresse bei LinkedCell eintragen)
3. Change-Event der Textbox verwenden.
denn wenn sich das Formelergebnis ändert, ändert sich die Textbox und deren Change-Event löst aus.

Gruß Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Worksheet Change Funktionalität in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Wähle das richtige Arbeitsblatt: Doppelklicke auf das Arbeitsblatt, in dem Du das Worksheet_Change Ereignis verwenden möchtest.

  3. Füge den Code ein: Schreibe oder füge Deinen Private Sub Worksheet_Change Code ein. Hier ein einfaches Beispiel:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
           If Target.Value = "Hide" Then
               Me.Rows("2:10").EntireRow.Hidden = True
           Else
               Me.Rows("2:10").EntireRow.Hidden = False
           End If
       End If
    End Sub
  4. Speichern: Stelle sicher, dass Du die Datei im .xlsm-Format speicherst, um die Makros zu aktivieren. Benutze dazu File > Save As und wähle den Dateityp Excel-Arbeitsmappe mit Makros (*.xlsm).


Häufige Fehler und Lösungen

  • Worksheet Change funktioniert nicht: Überprüfe, ob Du die Datei von einem vertrauenswürdigen Speicherort geöffnet hast. Excel kann Makros blockieren, wenn die Datei nicht als vertrauenswürdig eingestuft ist.
  • Entwurfsmodus aktiv: Stelle sicher, dass der Entwurfsmodus (Design Mode) in der Developer-Registerkarte nicht aktiviert ist. Dieser Modus deaktiviert alle VBA-Events.
  • Application.EnableEvents: Wenn Du den Befehl Application.EnableEvents = False ausgeführt hast, stelle sicher, dass Du ihn wieder auf True setzt, um Events zu aktivieren.

Alternative Methoden

Falls das Worksheet_Change Event nicht die gewünschten Ergebnisse liefert, kannst Du auch folgende Methoden ausprobieren:

  • Worksheet_SelectionChange: Nutze dieses Event, um Aktionen auszuführen, wenn der Benutzer eine Zelle auswählt. Es wird jedoch nicht bei der Änderung des Zellinhalts ausgelöst.
  • Calculate-Event: Dieses Event wird ausgelöst, wenn eine Formel im Arbeitsblatt neu berechnet wird. Du kannst den Code wie folgt hinzufügen:

    Private Sub Worksheet_Calculate()
       ' Dein Code hier
    End Sub

Praktische Beispiele

Hier sind einige nützliche Beispiele für Worksheet_Change:

  1. Zellen färben:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Me.Range("B1")) Is Nothing Then
           Target.Interior.Color = RGB(255, 0, 0) ' Rot
       End If
    End Sub
  2. Werte in einer Zelle überprüfen:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$C$1" And Target.Value < 10 Then
           MsgBox "Wert muss größer als 10 sein!"
       End If
    End Sub

Tipps für Profis

  • Verwende With Worksheets: Dies kann den Code übersichtlicher machen und die Ausführungsgeschwindigkeit erhöhen.
  • Debugging: Nutze Debug.Print in Deinem Code, um die Werte oder Status während der Ausführung zu überprüfen.
  • Verwende Application.ScreenUpdating = False: Dies kann helfen, den Code schneller auszuführen, indem Bildschirmaktualisierungen während der Ausführung des Codes deaktiviert werden. Vergiss nicht, es am Ende wieder auf True zu setzen.

FAQ: Häufige Fragen

1. Warum wird mein Worksheet_Change Code nicht ausgeführt?
Überprüfe, ob Du die Datei von einem vertrauenswürdigen Speicherort geöffnet hast und ob der Entwurfsmodus deaktiviert ist.

2. Gibt es ein Event, das auch bei Änderungen von Formelergebnissen ausgelöst wird?
Nein, das Worksheet_Change Event wird nur bei manuellen Änderungen ausgelöst. Du kannst jedoch das Calculate Event verwenden, um auf Änderungen zu reagieren.

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