Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

AfterUpdate-Ereignis auslösen

Forumthread: AfterUpdate-Ereignis auslösen

AfterUpdate-Ereignis auslösen
Sonnenpeter
Hallo,
nachfolgender Makro funktioniert ohne Probleme wenn ich direkt in die Textbox schreibe.
Private Sub TextBox2_AfterUpdate()
If Me.TextBox2.Value = "" Then
Me.TextBox2.ForeColor = &H80000008
Me.TextBox2.BackColor = &H80000005
Else
Me.TextBox2.BackColor = RGB(255, 255, 230)
Me.TextBox2.ForeColor = RGB(0, 0, 256)
End If
End Sub
Wenn ich werte einlese funktioniert das Makro leider nicht.
Was ist zu tun um das AfterUpdate auszulösen?
Gruß SP
Anzeige

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

Betreff
Benutzer
Anzeige
AW: AfterUpdate-Ereignis auslösen
04.04.2010 19:27:01
Lutz
Hallo Sonnenpeter,
wenn Du eine Userform aufrufst, kannst Du mit
UserForm_Initialize()
.... Code
End Sub
Deine Einstellungen vornehmen.
Code steht in Userform
M.f.G.
Lutz
AfterUpdate-Ereignisprozedur aufrufen
04.04.2010 20:49:23
Erich
Hi Peter,
wo liest du die Werte ein?
Wenn du (im Code der UserForm) so etwas stehen hast wie
TextBox2.Value = Cells(x, y)
dann kannst du als Zeile darunter
TextBox2_AfterUpdate
schreiben und damit die Prozedur direkt aufrufen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: AfterUpdate-Ereignisprozedur aufrufen
04.04.2010 21:19:22
Gerd
Hallo Peter,
so z.B.
Private Sub CommandButton1_Click()
TextBox2.Value = ""
TextBox2_AfterUpdate
End Sub

Private Sub CommandButton2_Click()
TextBox2.Value = 111
TextBox2_AfterUpdate
End Sub

Private Sub TextBox2_AfterUpdate()
If TextBox2.Value = "" Then
TextBox2.BackColor = vbGreen
Else
TextBox2.BackColor = vbRed
TextBox2.ForeColor = vbBlue
End If
End Sub
Gruß Gerd
Anzeige
AW: AfterUpdate-Ereignisprozedur aufrufen
04.04.2010 21:50:52
Sonnenpeter
Hallo Erich,
hallo Gerd,
Danke für den Hinweis. Wie war das mit dem Wald und den Bäumen (man sieht sie nicht) :-)))
Ich fahre jedoch eine Schleife
For i = 1 To 30
Controls("TextBox" & i + 24).Value = Cells(i,colIndex)
Next
Jetzt kann ich natürlich
TextBox2_AfterUpdate
TextBox3_AfterUpdate
etc. darunter setzen.
Geht das auch eleganter?
Gruß SP
Anzeige
Ereignisprozedur nicht aufrufen
05.04.2010 11:17:18
Erich
Hi Peter,
du könntest direkt in der Schleife färben:

For i = 1 To 30
With Controls("TextBox" & i + 24)
.Value = Cells(i, colIndex)
If .Value = "" Then
.BackColor = vbGreen
Else
.BackColor = vbRed
.ForeColor = vbBlue
End If
End With
Next
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönen O.montag!
Anzeige
AW: Ereignisprozedur nicht aufrufen
05.04.2010 19:57:37
Sonnenpeter
Servus Erich,
schon klar, da ich aber in den Textboxen auch Zahlen und Datumsformate darstelle ist die Schleife nur der halbe weg.
Ich habe also unter der Schleife allen Textboxen die Zahlenformate separat (einzeln) zugewiesen.
Einen anderen Weg habe ich nicht gefunden.
Danke für Deine Unterstützung.
Gruß SP
Anzeige
;
Anzeige

Infobox / Tutorial

AfterUpdate-Ereignis in Excel VBA auslösen


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und gehe zu den Entwicklertools.

  2. Erstelle eine UserForm oder öffne eine bestehende.

  3. Füge eine TextBox hinzu, z.B. TextBox2.

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

    Private Sub TextBox2_AfterUpdate()
       If Me.TextBox2.Value = "" Then
           Me.TextBox2.ForeColor = &H80000008
           Me.TextBox2.BackColor = &H80000005
       Else
           Me.TextBox2.BackColor = RGB(255, 255, 230)
           Me.TextBox2.ForeColor = RGB(0, 0, 256)
       End If
    End Sub
  5. Füge eine Schaltfläche hinzu, um den Wert in die TextBox zu laden und das AfterUpdate-Ereignis auszulösen:

    Private Sub CommandButton1_Click()
       TextBox2.Value = ""
       TextBox2_AfterUpdate
    End Sub
    
    Private Sub CommandButton2_Click()
       TextBox2.Value = 111
       TextBox2_AfterUpdate
    End Sub
  6. Teste die UserForm, um sicherzustellen, dass die Farben entsprechend den Eingaben in der TextBox geändert werden.


Häufige Fehler und Lösungen

  • Problem: Das AfterUpdate-Ereignis wird nicht ausgelöst, wenn Werte in die TextBox eingelesen werden.

    • Lösung: Rufe die AfterUpdate-Prozedur manuell auf, nachdem du den Wert zugewiesen hast:
      TextBox2.Value = Cells(x, y)
      TextBox2_AfterUpdate
  • Problem: Die TextBox bleibt unverändert.

    • Lösung: Überprüfe, ob der Code im richtigen Modul (UserForm) platziert ist und dass die TextBox korrekt benannt ist.

Alternative Methoden

  • Du kannst das AfterUpdate-Ereignis auch innerhalb einer Schleife auslösen, indem du für jede TextBox eine eigene Prozedur aufrufst. Eine elegantere Lösung könnte jedoch sein, die Eigenschaften direkt in der Schleife zu setzen:

    For i = 1 To 30
       With Controls("TextBox" & i + 24)
           .Value = Cells(i, colIndex)
           If .Value = "" Then
               .BackColor = vbGreen
           Else
               .BackColor = vbRed
               .ForeColor = vbBlue
           End If
       End With
    Next

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das AfterUpdate-Ereignis in verschiedenen Szenarien verwenden kannst:

  1. Einlesen von Werten aus einer Tabelle:

    Private Sub CommandButton_LoadValues_Click()
       For i = 1 To 30
           Controls("TextBox" & i + 24).Value = Cells(i, colIndex)
           Call Controls("TextBox" & i + 24).AfterUpdate
       Next
    End Sub
  2. Färben von TextBoxen basierend auf dem Inhalt:

    Private Sub TextBox_Any_AfterUpdate()
       If Me.TextBox_Any.Value = "Test" Then
           Me.TextBox_Any.BackColor = vbYellow
       Else
           Me.TextBox_Any.BackColor = vbWhite
       End If
    End Sub

Tipps für Profis

  • Verwende das With-Statement: Es verbessert die Lesbarkeit und Effizienz deines Codes.
  • Vermeide das mehrfache Aufrufen von AfterUpdate: Optimiere deinen Code, um unnötige Aufrufe zu vermeiden.
  • Debugging: Nutze Debug.Print innerhalb deiner AfterUpdate-Prozeduren, um den Fluss deines Codes zu verfolgen.

FAQ: Häufige Fragen

1. Frage
Was ist das AfterUpdate-Ereignis in VBA?
Das AfterUpdate-Ereignis wird ausgelöst, nachdem der Benutzer eine Eingabe in ein Steuerelement (z. B. eine TextBox) abgeschlossen hat.

2. Frage
Wie kann ich AfterUpdate für mehrere TextBoxen in einer Schleife aufrufen?
Du kannst eine Schleife verwenden, um die Werte zu setzen, und dann innerhalb der Schleife die AfterUpdate-Prozedur für jede TextBox aufrufen. Alternativ kannst du die Eigenschaften direkt in der Schleife anpassen.

3. Frage
Wo platziere ich den VBA-Code für AfterUpdate?
Der VBA-Code sollte im Codefenster der UserForm platziert werden, in der die TextBoxen vorhanden sind.

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