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

Forumthread: VBA Wenn sich ein Zellwert ändert, dann

VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 09:11:32
Peter
Hallo an Alle,
hier mein Hilferuf:
Wenn "B1" sich ändert, dann sollen die Zellen A6:G6 mit einer Null gefüllt werden.
Seit Tagen experimentiere ich mit dem Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Das Ausfüllen mir der Null habe ich mit dem Macrorecorder aufgenommen und den Code in Tabelle1 kopiert.
Das klappt bestens. Nur der erste Teil mit dem "Wenn Änderung" will nicht.
Ich Hoffe, Ihr könnt mir helfen.
LG
Peter

Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 09:22:54
Hajo_Zi
Hallo Peter,
man könnte vermuten es ist eine Formel, da ist Change das falsche Ereignis.
Da ist Private Sub Worksheet_Calculate()
das richtige Ereignis. Das ist mir aber zu aufwendig.

Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 12:32:45
Gerd
Hallo Peter,
bei manuellen Eingaben in B1. Der Code gehört ins Codefenster der Tabelle.
Private Sub Worksheet_Change(ByVal Target As Range)
Static varOldB1 As Variant
If Target.Address(0, 0, xlA1) = "B1" Then
If Target.Value  varOldB1 Then
If varOldB1  "" And Target.Value  "" Then Range("A6:G6") = 0
varOldB1 = Target.Value
End If
End If
End Sub
Gruß Gerd

Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 09:40:36
Beverly
Hi Peter,
offensichtlich ist B1 ein Formelergebnis - eine Änderung reagiert nicht auf das Change-Ereignis. Du müsstest dann nicht B1 sondern die Zellen überwachen, aus denen die Formel ihre Werte zur Berechnung bezieht.


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 09:59:08
Peter
Hi Karin,
Du hast mit Deiner Vermutung zum Teil Recht.
Zelle B1 ist mit einem Schalter verbunden, welcher in Einserchritten rauf und runter schaltet.
Enthält aber keine Formel.
Danke trotzdem
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 10:04:58
Beverly
Hi Peter,
dann musst du den Code an den Schalter binden und nicht an ein Ereignis im Tabellenblatt.


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:10:21
Peter
Hi Karin,
danke für Deinen Tip, allerdings stehe ich vor den nächsten Rätsel.
Wie verbindet man den Code mit dem Schalter?
LG
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:21:51
Beverly
Hi Peter,
was für ein Steuerelement verwendest du - Formular oder ActiveX?


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:25:05
Peter
Hi Karin,
bei dem Schalter handelt es sich um ein Formular.
Ich könnte evtl. auch ein ActiveX daraus machen.
LG
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:33:08
Beverly
Hi Peter,
du musst kein anderes Steuerelement verwenden, nur ist der Typ wichtig zu wissen, um den passenden Code dafür posten zu können. Bei einem Formular-Steuerelement musst du ein betreffendes Makro in einem allgemeinen Modul erstellen und dieses mit dem Steuerelement verknüpfen (Rechtsklick -&gt Marko zuweisen).
Sub Ausfuellen()
Range("A6:G6") = 0
End Sub


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:46:29
Peter
Hi Karin,
Du bist ja eine Wucht, es ist ja doch so einfach, wenn man es kann - DANKE!
Geht das auch ohne Macho zuweisen?
Der Firmenrechner mag keine Rechner.
LG
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 12:13:52
Beverly
Hi Peter,
das verstehe ich leider gerade nicht - lies dir deinen Beitrag mal aus Sicht eines Außenstehenden durch...


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 16:52:56
Peter
Oups,
da hat mir die Rechtschreibkorrektur wohl einen Streich gespielt.
Ich wollte fragen:
Geht das auch ohne Macro zuweisen?
Der Firmenrechner mag keine Macros.
LG
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 17:28:23
Beverly
Hi Peter,
ob du Code im Codemodul des Tabellenblattes stehen hast (so wie dein Worksheet_Change Ereignis) oder sich der Code in einem allgemeinen Modul befindet (wie mein Makro) spielt doch keine Rolle - beides ist VBA und ohne VBA geht es nicht.


Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 17:36:11
Peter
Hi Karin,
danke für die Aufklärung.
Ich dachte nämlich, Code im Codemodul wäre kein Makro.
Jetzt bin ich schlauer.
Schönes WE
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 09:45:48
Matze
Hallo Peter,
Hajo und Beverly haben dir ja schon geantwortet.
stell doch bitte mal die Formel die in B1 steht hier ins Forum oder besser noch die Datei
mit Musterdaten.
Matze

Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 10:16:27
Peter
Hallo Matze,
die Datei ist kein Geheimnis und ich lade sie jetzt hoch.
Ist eine gute Idee.
Allerdings muss nach dem Download das Suffix in".xlsm" umbenannt werden.
Datei mit xlsm kann man nicht uploaden.
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 10:22:26
Matze
Hallo Peter ,
doch das funktioniert, du musst dich nur an die Regeln dort halten, ist alles beschrieben.
du kannst diese auch zippen und dann hier uploaden.
Matze

Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:22:00
Peter
O.K.
ich versuche es mit dem Zippen.
OUPS! Die Zipdatei ist auch grau hinterlegt und ich kann sie nicht uploaden
LG
Peter

AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 11:57:40
Matze
Hallo Peter,
verstehe ich nicht, normalerweise funktioniert das, irgendetwas machst du falsch.
Ausnahme, sende sie an Machtnix21@gmx.de , werde es in die Wege leiten diese hier einzustellen.
Matze

Anzeige
AW: VBA Wenn sich ein Zellwert ändert, dann
19.05.2013 17:02:57
Peter
Hallo Matze,
danke für Deine Bemühung, aber es hat sich erledigt.
Beverly hat den Fall mit Bravour gelöst.
Danke noch einmal
Peter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Automatisches Füllen bei Zellwertänderung


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zu dem Arbeitsblatt, in dem du die Änderung überwachen möchtest.

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

  3. Wähle im Projektfenster das gewünschte Arbeitsblatt aus (z.B. Tabelle1).

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

    Private Sub Worksheet_Change(ByVal Target As Range)
        Static varOldB1 As Variant
        If Target.Address(0, 0) = "B1" Then
            If Target.Value <> varOldB1 Then
                If varOldB1 <> "" And Target.Value <> "" Then 
                    Range("A6:G6") = 0
                End If
                varOldB1 = Target.Value
            End If
        End If
    End Sub
  5. Schließe den VBA-Editor und teste die Funktion, indem du den Wert in Zelle B1 änderst.


Häufige Fehler und Lösungen

  • Die Zelle wird nicht aktualisiert: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Modul eingefügt hast.

  • Keine Reaktion auf Formeln: Wenn B1 eine Formel ist, verwende das Worksheet_Calculate-Ereignis anstelle von Worksheet_Change.

    Private Sub Worksheet_Calculate()
        If Range("B1").Value <> "" Then Range("A6:G6") = 0
    End Sub
  • Die Zellen A6:G6 füllen sich nicht: Überprüfe, ob die Bedingungen im Code korrekt sind und dass B1 tatsächlich geändert wird.


Alternative Methoden

  • Verknüpfung mit einem Formular-Steuerelement: Wenn du den Wert ändern möchtest, indem du ein Formular-Steuerelement verwendest, erstelle ein Makro in einem allgemeinen Modul:

    Sub Ausfuellen()
        Range("A6:G6") = 0
    End Sub
  • Verwendung von ActiveX-Steuerelementen: Bei ActiveX-Steuerelementen kannst du ähnliche Ereignisse verwenden, um die Zelle zu überwachen.


Praktische Beispiele

  • Beispiel 1: Bei einer Dropdown-Liste in B1, die verschiedene Optionen hat, wird A6:G6 auf 0 gesetzt, wenn der Wert geändert wird.
  • Beispiel 2: Wenn du mit einem Schieberegler den Wert in B1 veränderst, kann das ebenfalls die Zellen A6:G6 aktualisieren.

Tipps für Profis

  • Verwende Application.EnableEvents = False am Anfang des Codes, um rekursive Aufrufe zu vermeiden, und setze es am Ende wieder auf True.
  • Nutze Debug.Print innerhalb deines Codes, um Probleme zu diagnostizieren, indem du den aktuellen Wert von Variablen überprüfst.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen überwachen?
Du kannst den Code erweitern, indem du mehrere If-Bedingungen hinzufügst, um verschiedene Zellen zu überprüfen.

2. Kann ich auch auf Änderungen in anderen Arbeitsblättern reagieren?
Ja, du kannst den Worksheet_Change-Code in das spezifische Arbeitsblatt-Modul einfügen, um Änderungen zu überwachen, oder in ein allgemeines Modul, um alle Arbeitsblätter zu berücksichtigen.

3. Geht das auch ohne VBA?
Ohne VBA ist es nicht möglich, direkt auf Zellwertänderungen zu reagieren. Du kannst jedoch Formeln verwenden, um bestimmte Werte zu berechnen, wenn sich andere Werte ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige