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

Forumthread: Excel vba Change-Ereignis für bestimmten bereich

Excel vba Change-Ereignis für bestimmten bereich
09.12.2019 16:00:03
Dominik
Hallo,
ich habe den folgenden Change-Ereignis-Code der zwar funktioniert aber nicht so wie ich mir das wünsche. Der Code soll folgendes machen: Wenn in dem Zellbereich B1:B3 der text "fet" vorkommt und gleichzeitig in dem Bereich A1:A3 die Zahl kleiner 590 ist, soll er eine msg box öffnen mit zahl muss größer 590 sein. Jetzt führt es das Makro aber aus sobald z.B. in B1 fet steht und in a2 eine Zahl kleiner 590 steht. Es soll aber erst ausgeführt werden wenn in a2 eine Zahl kleiner 590 und in b2 fet steht. Und das soll dann auch für a1 und b1 sowie für a3 und b3 gelten. Dann soll der Nutzer einen Hinweis bekommen.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
If Worksheets("tabelle4").Range("a1").Value  0 Then
MsgBox ("Zahlu muss größer 590 sein!")
End If
End If
End Sub
gruß dominik
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel vba Change-Ereignis für bestimmten bereich
09.12.2019 16:25:20
volti
Hallo Dominik,
meintest Du so etwas?
Option COMPARE TEXT
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
  If Cells(Target.Row, "B").Value Like "*fet*" And Target.Value <= 590 Then
    MsgBox ("Zahl muss größer 590 sein!")
  End If
End If
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Excel vba Change-Ereignis für bestimmten bereich
09.12.2019 16:35:44
UweD
Hallo
so?
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Const APPNAME = "Worksheet_Change"
    If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
        With Target
            If .Value < 590 And InStr(.Offset(0, 1), "fet") > 0 Then
                MsgBox ("Zahl U muss größer 590 sein!")
                Application.EnableEvents = False
                Application.Undo
            End If
        End With
        
    End If
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

LG UweD
Anzeige
AW: Excel vba Change-Ereignis für bestimmten bereich
10.12.2019 10:59:54
dominik
Hallo Karl-Heinz und Uwe,
vielen Dank für eure schnelle Rückmeldung. Beide Varianten funktionieren und machen genau das was ich gesucht habe. Vielen Dank euch beiden.
Gruß
Dominik
;

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

Excel VBA Change-Ereignis für bestimmten Bereich


Schritt-für-Schritt-Anleitung

Um das Worksheet_Change-Ereignis in Excel VBA für bestimmte Zellen zu implementieren, befolge diese Schritte:

  1. Öffne Excel und die entsprechende Arbeitsmappe.

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

  3. Suche im Projekt-Explorer das Arbeitsblatt, auf dem du den Code anwenden möchtest.

  4. Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.

  5. Füge den folgenden VBA-Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
           If Cells(Target.Row, "B").Value Like "*fet*" And Target.Value < 590 Then
               MsgBox "Zahl muss größer 590 sein!"
           End If
       End If
    End Sub
  6. Schließe den VBA-Editor und teste den Code, indem du Werte in die Zellen A1:A3 und B1:B3 eingibst.


Häufige Fehler und Lösungen

  • Fehler: MsgBox erscheint nicht
    Lösung: Überprüfe, ob der Text in der Zelle B1:B3 genau "fet" enthält. Der Like-Operator ist hier wichtig.

  • Fehler: Code funktioniert nicht in der angegebenen Range
    Lösung: Stelle sicher, dass du den richtigen Zellbereich in der Intersect-Funktion angegeben hast.

  • Fehler: Ereignis wird nicht ausgelöst
    Lösung: Achte darauf, dass die Ereignisse in Excel aktiviert sind. Verwende Application.EnableEvents = True.


Alternative Methoden

Eine andere Möglichkeit, das gleiche Ziel zu erreichen, ist die Verwendung von Worksheet_Change mit einer With-Anweisung:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A1:A3")) Is Nothing Then
        With Target
            If .Value < 590 And InStr(.Offset(0, 1).Value, "fet") > 0 Then
                MsgBox "Zahl muss größer 590 sein!"
            End If
        End With
    End If
End Sub

Diese Methode kann den Code lesbarer machen und gleichzeitig die Performance verbessern.


Praktische Beispiele

Hier sind einige praktische Beispiele für verschiedene Szenarien:

  1. Ändern eines Wertes in den Zellen A1:A3
    Wenn du in Zelle A1 den Wert 500 und in B1 fet eingibst, wird die MsgBox angezeigt.

  2. Mehrere Bedingungen
    Du kannst den Code erweitern, um weitere Bedingungen hinzuzufügen, wie z.B. weitere Zellbereiche oder andere Texte.


Tipps für Profis

  • Verwende Application.Undo, um den letzten Wert zurückzusetzen, falls eine ungültige Eingabe erfolgt ist:

    Application.Undo
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung mit On Error GoTo, um unerwartete Fehler elegant zu handhaben.

  • Leistungsoptimierung: Deaktiviere Ereignisse während der Ausführung des Codes, um unnötige Aufrufe zu vermeiden:

    Application.EnableEvents = False
    ' Dein Code hier
    Application.EnableEvents = True

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellbereiche überwachen?
Du kannst die Intersect-Funktion erweitern, um mehrere Bereiche zu integrieren. Beispiel:

If Not Application.Intersect(Target, Range("A1:A3, D1:D3")) Is Nothing Then

2. Was passiert, wenn der Code nicht funktioniert?
Überprüfe den Zellbereich, die eingegebenen Werte und stelle sicher, dass die Makros in deiner Excel-Datei aktiviert sind.

3. Kann ich den Code anpassen, um andere Nachrichten anzuzeigen?
Ja, du kannst die MsgBox-Nachricht einfach ändern, um andere Informationen anzuzeigen, je nach deinen Bedürfnissen.

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