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

Forumthread: MsgBox in Userform

MsgBox in Userform
23.01.2009 11:27:00
Max
Hi
Habe in einer UF eine Listbox und mit der Textbox werden Werte in die Tabelle Data überträgt.
Sofern schon ein Wert vorhanden ist sollte die MsgBox kommen. Leider geht das nicht, obwohl ich den Code als Userform_activate habe.
Was mache ich hier falsch?

Private Sub Userform_activate(ByVal Target As Range)
If Not Intersect(Target, Range("E2:E5000")) Is Nothing And Target.Count = 1 Then
If Application.CountIf(Worksheets("Data").Range("E2:E5000"), Target.Value) > 1 Then _
MsgBox "Nummer existiert schon!"
End If
End Sub


Könnte jemand den Code evt. anschauen, warum es nicht funktioniert?
Danke schon im Voraus
Gruß
Max

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox in Userform
23.01.2009 11:39:00
Tino
Hallo,
Du kannst keine eigenen Events erfinden.
Private Sub Userform_activate(ByVal Target As Range
Dieses Eventmakro gibt es nicht.
Versuche es mal so.

Private Sub UserForm_Activate()
If Not Intersect(ActiveCell, Range("E2:E5000")) Is Nothing And Selection.Count = 1 Then
If Application.CountIf(Worksheets("Data").Range("E2:E5000"), ActiveCell.Value) >= 1 Then _
MsgBox "Nummer existiert schon!"
End If
End Sub


Gruß Tino

Anzeige
AW: MsgBox in Userform
23.01.2009 11:42:00
Ramses
Hallo
Das hat nichts mit INTERSECT und auc nichts mit Userform_Activate zu tun.
Einfach mal ein wenig nachdenken ... )
Das gehört in das Textbox_Change oder Textbox_Exit Ereignis und dann reicht das bereits.
Ausserdem ist das völliger Qutasch, weil es beim Activate-Ereignis kein "ByVal Target as Range" gibt

Private Sub Textbox1_Change()
If Application.CountIf(Worksheets("Data").Range("E2:E5000"), CInt(Me.Textbox1.Text)) > 1 Then
MsgBox "Nummer existiert schon!"
End If
End Sub


Gruss Rainer

Anzeige
AW: MsgBox in Userform
23.01.2009 13:24:25
Max
Hi Rainer, Hi Tino
Danke für den Code.
Habe mal den Code von Rainer getestet und es geht.
Danke nochmals.
Ist es möglich, daß falls doppelte Werte eingetragen werden diese Zelle mit untenstehendem Code nicht befüllt wird.
Da ich noch in VBA viel viel lernen muss versuche ich es zuerst einmal bevor ich ins Forum komme.
CInt(Me.TextBox1.Text)).Value = ""
Fehlt an diesem Code noch etwas besonderes?
Gruß
Max
Anzeige
AW: MsgBox in Userform
23.01.2009 13:27:00
Ramses
Hallo
Im Prinzip stimmt das so
Gruss Rainer
AW: MsgBox in Userform
23.01.2009 13:37:26
Max
Hi Rainer
Was meinst Du mit im prinzip?
Habe es so eingepflegt aber ohne großen Erfolg.
Mache ich einen Denkfehler?

Private Sub Textbox1_Change()
If Application.CountIf(Worksheets("Data").Range("E2:E5000"), CInt(Me.Textbox1.Text)) > 1  _
Then
MsgBox "Nummer existiert schon!"
CInt(Me.TextBox1.Text)).Value = ""
End If
End Sub


Gruß
Max

Anzeige
AW: MsgBox in Userform
23.01.2009 13:45:00
Ramses
Hallo
schreib es so
Option Explicit

Private Sub Textbox1_Change()
    If Me.TextBox1 = "" Then Exit Sub
    If Application.CountIf(Worksheets("Tabelle1").Range("A1:A10"), CInt(Me.TextBox1.Text)) > 0 Then
        MsgBox "Nummer existiert schon!"
        Me.TextBox1.Value = ""
    End If
End Sub

gruss Rainer
Anzeige
AW: MsgBox in Userform
23.01.2009 14:11:00
Max
Hi Rainer
Möchte Dich nicht unnötig stören.
Kann es sein, daß der eingebene Wert (trotz doppeleintrag) trotzdem eingetragen wird auch nach der Meldung!
Gruß
Max
AW: MsgBox in Userform
23.01.2009 14:24:00
Ramses
Hallo
Wenn du keine Anweisung gegeben hast es einzutragen, und in dem Beispiel sehe ich absolut nichts davon,.... wie soll der Wert dann eingetragen werden ?
Gruss Rainer
Anzeige
AW: MsgBox in Userform
23.01.2009 14:28:30
Max
Hi Rainer
Mache es über ein Commandbutton.
Gruß
Max
AW: MsgBox in Userform
23.01.2009 14:30:00
Ramses
Hallo
Lade die Datei mal hoch, sonst macht das keinen sinn.
Gruss Rainer
AW: MsgBox in Userform
23.01.2009 14:43:00
Max
Hi Rainer
Nimms mir nicht böse, aber wenn ich die Schwierigkeiten lese in diesem Forum, begnüge ich mich, daß
nur die Meldung kommt. Der Rest sollen doch die User selber darauf kommen.
Trotzdem möchte ich mich bei Dir für Deine Hilfe bedanken
Gruß
Max
Anzeige
AW: MsgBox in Userform
23.01.2009 14:49:07
Ramses
Hallo
Wo ist das Problem ?
In dem Beispiel von mir ist in keiner Zeile erwähnt IRGENDWO etwas in die Tabelle zu schreiben.
Du schreibst, es steht sonst nirgends was.
Da EXCEL nicht zaubern kann und der Computer derselbst zu dumm etwas zu machen was man ihm nicht aufgetragen hat,.. muss noch irgendwo was drin stehen :-)
Daher die Bitte die Datei hochzuladen, zur Kontrolle.
Ansonsten reden wir hier dauernd um den heissen Brei herum und kommen nicht vorwärts
Gruss Rainer
Anzeige
;
Anzeige

Infobox / Tutorial

MsgBox in Userform nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Userform in Excel, in der du die MsgBox verwenden möchtest.
  2. Wähle das richtige Ereignis aus: Du kannst entweder UserForm_Activate() oder das Textbox1_Change()-Ereignis nutzen, um die MsgBox anzuzeigen.
  3. Füge den folgenden Code in das entsprechende Ereignis ein, um zu prüfen, ob der Wert bereits existiert:

    Private Sub TextBox1_Change()
       If Application.CountIf(Worksheets("Data").Range("E2:E5000"), CInt(Me.TextBox1.Text)) > 0 Then
           MsgBox "Nummer existiert schon!"
           Me.TextBox1.Value = ""
       End If
    End Sub
  4. Teste die Userform, indem du Werte eingibst, die bereits in der Tabelle vorhanden sind. Die MsgBox sollte erscheinen und das Textfeld wird zurückgesetzt.

Häufige Fehler und Lösungen

  • Fehler: MsgBox erscheint nicht
    Lösung: Stelle sicher, dass du das richtige Ereignis (z.B. TextBox1_Change) verwendest und dass der Code korrekt eingegeben ist.

  • Fehler: Wert wird trotz Meldung eingetragen
    Lösung: Überprüfe, ob du den Wert im Textfeld zurücksetzt. Der Code Me.TextBox1.Value = "" sollte unmittelbar nach der MsgBox stehen.

  • Fehler: „ByVal Target as Range“ nicht erkannt
    Lösung: Dieses Event gibt es nicht in VBA für UserForms. Verwende stattdessen ActiveCell oder das Textbox-Ereignis.


Alternative Methoden

Es gibt mehrere Wege, um eine MsgBox in einer Userform zu verwenden:

  1. Verwende ein CommandButton: Du kannst die Prüfung auch in das Click-Ereignis eines CommandButtons legen, um beim Klicken auf den Button die MsgBox anzuzeigen.

    Private Sub CommandButton1_Click()
       If Application.CountIf(Worksheets("Data").Range("E2:E5000"), CInt(Me.TextBox1.Text)) > 0 Then
           MsgBox "Nummer existiert schon!"
           Me.TextBox1.Value = ""
       End If
    End Sub
  2. Nutze das Textbox_Exit-Ereignis: Diese Methode prüft, ob der Benutzer das Textfeld verlässt, und zeigt dann die MsgBox an.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die MsgBox bei der Eingabe in ein Textfeld nutzen kannst:

Private Sub TextBox1_Change()
    If Me.TextBox1.Text = "" Then Exit Sub
    If Application.CountIf(Worksheets("Data").Range("E2:E5000"), CInt(Me.TextBox1.Text)) > 0 Then
        MsgBox "Nummer existiert schon!"
        Me.TextBox1.Value = ""
    End If
End Sub

Stelle sicher, dass das Textfeld nicht leer ist, bevor du die Prüfung durchführst. Dies verhindert Fehler bei der Umwandlung in einen Integer.


Tipps für Profis

  • Verwende Option Explicit: Füge am Anfang deiner Module Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert sind.
  • Füge Validierungsregeln hinzu: Du kannst weitere Prüfungen einfügen, um sicherzustellen, dass nur gültige Eingaben akzeptiert werden.
  • Optimiere die Benutzererfahrung: Überlege, ob du zusätzliche Hinweise oder Anweisungen in der Userform einfügen kannst, um die Benutzerführung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen?
Du kannst den Text der MsgBox anpassen, indem du den String in MsgBox "Dein Text" änderst.

2. Funktioniert das in allen Excel-Versionen?
Ja, die beschriebenen Methoden funktionieren in den meisten Versionen von Excel, die VBA unterstützen (ab Excel 2000).

3. Was ist der Unterschied zwischen UserForm_Activate und TextBox1_Change?
UserForm_Activate wird aufgerufen, wenn die Userform geöffnet wird, während TextBox1_Change bei jeder Änderung im Textfeld ausgeführt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige