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

Forumthread: Eingabe in USERFORM/Prüfen ob Wert vorhand

Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 17:38:10
Peter
Guten Tag,
wir benutzen im Büro eine Tabelle, die von mehreren Mitarbeitern genutzt wird.
Die Eingabe erfolgt über eine USERFORM mit Textbox für Datum (Spalte A),
Textbox für Preis "A" (Spalte B) und Textbox für Preis "B" (Spalte C) etc..
Da sich in letzter Zeit häufig Fehler eingeschlichen haben, möchte ich, dass nach
Eingabe des Datums in die Textbox sowohl bei Preis "A" als auch bei Preis "B" geprüft wird, ob
unter diesem Datum hier schon ein Wert existiert. Somit ließe sich vermeiden, dass Werte fälschlicherweise überschrieben werden.
Komme trotz intensiver Recherche leider nicht weiter.
Wäre nett, wenn mir jemand hierzu eine Hilfestellung bieten könnte.
Beste Grüße
Peter S.
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 17:54:04
Hajo_Zi
Hallo Peter,
MsgBox Application.Match(CDbl(Textbox1), Columns(1), 0)
es wird die Zeile zurückgegeben falls vorhanden.

AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 18:31:28
Peter
Hallo Hajo,
zunächst schon mal vielen Dank für deine Unterstützung.
Leider bekomme ich das so nicht hin.
Gehört dein vorgeschlagener Code "MsgBox Application.Match(CDbl(Textbox1), Columns(1), 0)"
zum Code der TextBox1 oder in den Erfassungsbutton "CommandButton1".
Mein Ziel ist es ja, schon bei Eingabe des 1. Preises (sprich in der Textbox) zu erkennen, ob hier schon
unter diesem Datum ein Wert vorhanden ist.
Vielleicht drücke ich mich hier auch ein wenig ungeschickt aus. Sorry, bin halt erst am "Üben".....
Gruß Peter S.
Anzeige
AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 18:39:15
Hajo_Zi
Hallo Peter,

Option Explicit
Sub T()
Dim Loi As Long
On Error Resume Next
Loi = Application.Match(CDbl(Date), Columns(1), 0)
If Loi = 0 Then
MsgBox "nicht vorhanden"
Else
MsgBox "Zeile " & Loi
End If
On Error GoTo 0
End Sub


Damit wir festgestelt in Welcher Zeile das Datum steht (Textbox1)
Gruß Hajo

Anzeige
AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 19:12:02
Peter
Hallo Hajo,
hab' deinen Lösungsvorschlag getestet. Leider erscheint der msg-Hinweis "nicht vorhanden"
egal, ob das Datum vorhanden ist oder nicht.
Hatte mir das so vorgestellt, dass ähnlich wie beim u. g. Datumsfeld direkt bei Eingabe des Preises
z. B. von Produkt A der Hinweis erscheint "Preis von A am 23.05.2009 schon vorhanden."
Danke dir aber für deine Hilfe. Werde versuchen, es irgendwie hinzubekommen.

Private Sub Datum_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If DatumGetestet(Datum.Value) = False Then
Cancel = True
MsgBox "Bitte richtiges Datum eingeben"
Application.EnableEvents = False
Datum.SetFocus
Application.EnableEvents = True
Else
Datum = Format(DatumGetestet(Datum.Value), "dd/mm/yyyy")
End If
End Sub



Public Function DatumGetestet(strDatum As String) As Variant
'Funktion erkennt A L L E
'fehlerhaften Datumsangaben
'Auch Überprüfung auf Monat 28, 30 oder 31 Tage
'(bei Februar auf Schaltjahre)
'nur Ziffern angaben zulässig (oder die Formate erweitern)
'Function gibt bei Fehler False (Boolean)
'und bei gültigem Datum das Datum (Date) zurück
DatumGetestet = False
If IsDate(strDatum) Then
Select Case Trim(strDatum)
Case Format(CDate(strDatum), "d/m/yy"), _
Format(CDate(strDatum), "d/m/yyyy"), _
Format(CDate(strDatum), "d/mm/yy"), _
Format(CDate(strDatum), "d/mm/yyyy"), _
Format(CDate(strDatum), "dd/m/yy"), _
Format(CDate(strDatum), "dd/m/yyyy"), _
Format(CDate(strDatum), "dd/mm/yy"), _
Format(CDate(strDatum), "dd/mm/yyyy")
DatumGetestet = CDate(strDatum)
End Select
End If
End Function


Anzeige
Deinen Code zu spaet gesehen,teste trotzdem. owT.
21.06.2009 19:26:35
hary
.
AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
21.06.2009 19:34:39
Peter
Hallo Hary,
danke, ist fast genau das was ich gesucht habe.
Kann ich jetzt als Grundlage für mein Makro nehmen.
Vielen Dank nochmals und beste Grüße
Peter S.
Anzeige
Bitte, danke fuer Rueckmeldung owT
21.06.2009 19:54:42
hary
.
AW: Eingabe in USERFORM/Prüfen ob Wert vorhand
22.06.2009 03:42:42
stefan
Hallo Peter
Hab dir mal eine Beispiel-Datei gemacht, mit komplett funktionierender UserForm. Hoffentlich das, was du suchst.
https://www.herber.de/bbs/user/62625.xls
Gruss Stefan
Nachtrag zu meiner Datei
22.06.2009 03:56:57
stefan
Hallo Forum.
Wenn ich meine gerade veröffentlichte Datei direkt öffne, funktioniert diese nicht richtig.
Lade ich sie mir auf meinen Rechner und starte sie dann, dann funktioniert alles einwandfrei.
Wie kommt das? Funktioniert diese bei Euch erst nach dem Herunterladen+Öffnen?
Gruss Stefan
PS: Sorry! Bei meiner UserForm habe ich vergessen die Textboxen zu beschriften:
1. Datum (tt.mm.yyyy)
2. PreisA
3. PreisB
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

Eingabe in USERFORM: Werte überprüfen und Fehler vermeiden


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass bei der Eingabe in eine USERFORM keine Werte überschrieben werden, kannst Du folgende Schritte befolgen:

  1. Erstelle die USERFORM: Füge Textboxen für das Datum, Preis "A" und Preis "B" hinzu. Diese sollten z.B. Textbox1, Textbox2 und Textbox3 sein.

  2. Code für die Prüfung einfügen: Im Erfassungsbutton (CommandButton1) fügst Du den folgenden VBA-Code ein:

    Private Sub CommandButton1_Click()
       Dim Datum As Double
       Dim PreisA As Double
       Dim PreisB As Double
       Dim Loi As Long
    
       Datum = CDbl(Textbox1.Value)
       PreisA = CDbl(Textbox2.Value)
       PreisB = CDbl(Textbox3.Value)
    
       Loi = Application.Match(Datum, Columns(1), 0)
    
       If Not IsError(Loi) Then
           MsgBox "Wert für Preis A oder Preis B am " & Format(Datum, "dd.mm.yyyy") & " bereits vorhanden."
       Else
           ' Hier kannst Du den Code für das Speichern der Daten einfügen
       End If
    End Sub
  3. Datum validieren: Verwende die Funktion DatumGetestet, um sicherzustellen, dass das Datum korrekt eingegeben wurde. Diese Funktion kann im gleichen Modul hinzugefügt werden.


Häufige Fehler und Lösungen

Fehler 1: "nicht vorhanden" erscheint immer, auch wenn das Datum existiert.
Lösung: Stelle sicher, dass das Datumsformat in der Excel-Tabelle mit dem Format in der Textbox übereinstimmt.

Fehler 2: Eingabefelder sind nicht korrekt verknüpft.
Lösung: Überprüfe die Namen der Textboxen und die Referenzen im Code. Sie sollten exakt übereinstimmen.


Alternative Methoden

Wenn Du eine einfachere Lösung suchst, kannst Du auch die Data Validation in Excel verwenden, um sicherzustellen, dass keine doppelten Werte eingegeben werden. Dies kann über die Registerkarte "Daten" in Excel eingestellt werden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du eine USERFORM erstellen kannst:

  1. Füge eine USERFORM mit drei Textboxen (Datum, Preis A, Preis B) hinzu.
  2. Implementiere den oben gegebenen VBA-Code.
  3. Teste die Eingaben und achte auf die Meldungen.

Du kannst eine Beispiel-Datei als Vorlage verwenden, um die Funktionsweise zu verstehen.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt Dich, alle Variablen zu deklarieren, was dazu beiträgt, Fehler zu vermeiden.
  • Fehlerbehandlung: Nutze On Error Resume Next und On Error GoTo für eine bessere Fehlerbehandlung.
  • Dokumentation: Kommentiere Deinen Code gut, um die Nachvollziehbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich das Datum in einem bestimmten Format prüfen?
Du kannst die Funktion IsDate verwenden, um sicherzustellen, dass das eingegebene Datum gültig ist.

2. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe die Namen der Textboxen und die Verweise auf die entsprechenden Spalten in Deinem Code. Achte auch auf das Datumsformat.

3. Kann ich die USERFORM automatisch schließen?
Ja, Du kannst Unload Me am Ende Deines Codes verwenden, um die USERFORM nach der Eingabe zu schließen.

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