Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform - Textfelder dürfen nicht identisch sein

Userform - Textfelder dürfen nicht identisch sein
25.02.2018 13:00:11
Yannik
Hallo
Das ist mein erster Forenbeitrag und ich hab folgendes Problem:
Ich habe eine Userform mit 6x Textfeldern, deren Inhalt Barcode-Scanner gefüllt werden (min. 1 Eintrag, max. 6 Einträge).
Es müssen nicht alle gefüllt werden.
ABER: von den gefüllten dürfen keine identischen Inhalte übertragen werden.
Ich weiss nicht, wie ich das am besten löse.
Meine Idee geht in Richtung:
"prüfe nur die Textfelder, die einen Inhalt haben auf identische Wert und warne mich, dass Textfelder identsche Werte haben" (von da aus, wird manuell behoben)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Textfelder dürfen nicht identisch sein
25.02.2018 13:11:23
Hajo_Zi
Dein Ansatz ist richtig.
benutze
Private Sub TextBox1_AfterUpdate()
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Bespiel
25.02.2018 13:16:57
Fennek
Hallo,
für die Zellen A1:A6 prüft dieser Code auf gleiche Werte:

Sub Main
for i = 1 to 5
for j = i+1 to 6
if cells(i,1) = cells(j,1) then msgbox i & ", " & j
next j
next i
End Sub
Wenn die TextBox1 bis TextBox6 benannte sind, geht anstelle von Cells:
"TextBox" & i = "TextBox" & j
mfg
AW: Bespiel
25.02.2018 13:32:23
Yannik
Das Ganze soll im folgenden Code für die Userform
passieren
Die Eingabe-Übertragung soll vorher gefiltert werden, d.h. keine Nachbearbeitung
in den Tabellenblättern (sollen später nur zum "Ansehen" beschrieben werden)
(Kann das gesamte Projekt, etc. nicht einfach so rausgeben: Ist ein Uni-Firmen-Projekt)
'--------------------------------------------------------------------------------------------
'-- Button "Eingabe übertragen"
'--------------------------------------------------------------------------------------------
Private Sub Cmd_EingabeUebertragen_Click()
'Alle Variablen für "Übertragungsfehler vermeiden" (Details => siehe unten)
Dim PflichtFelder As Boolean        'E1
Dim ArtikelMin As Boolean           'E2
Dim ArtikelNichtZahl As Boolean     'E3
Dim MengeNichtZahl As Boolean       'E4
Dim MengeZuGross As Boolean         'E5
'-- Variablenwerte
wshtDA = "DA_EingabeProtokoll"
wshtDATank = "DA"
infoDA = "DA4"
    'Variablen-Werte (Eingabefehler)
'--EingabeFehler 1 vorbereiten: Fehlende Eingabe
PflichtFelder = (txt_ArtikelvarianteIN.Value = "" Or _
txt_MengeIN.Value = "" Or _
txt_Walze1IN.Value = "Bitte barcode scannen" Or _
txt_Walze1IN.Value = "")
    '--EingabeFehler 2 vorbereiten: Artikelvariante muss min. 8 Zahlen haben
ArtikelMin = Len(txt_ArtikelvarianteIN)  7 'über 9.999.999 Meter
'------IN ENTWICKLUNG-------------------------------------------------------------------
    '--EingabeFehler 6 vorbereiten: Walze darf nicht doppelt od. mehrfach gescannt werden _
'EingabeFehler 1:
If PflichtFelder = True Then
'Warnung, wenn zutreffend
MsgBox "Bitte Pflichtfelder(*) kontrollieren!" & Chr(10) & Chr(10) _
& "Empfohlene Reihenfolge der Eingabe:" & Chr(10) & _
"- Artikelvariante" & Chr(10) & _
"- Menge/M" & Chr(10) & _
"- Walzenkarte 'XYZ'", _
48, "Eingabefehler"
'EingabeFehler 2: Warnung, wenn zutreffend
ElseIf ArtikelMin = True Then
'Warnung, wenn zutreffend
MsgBox "Artikelvariante muss zwischen 8  und 10 Ziffern enthalten!", _
48, "Eingabefehler"
'EingabeFehler 3: Warnung, wenn zutreffend
ElseIf ArtikelNichtZahl = True Then
'Warnung, wenn zutreffend
MsgBox "Bitte nur Zahlen als " & """Artikelvariante""" & " eintragen", _
48, "Eingabefehler"
'EingabeFehler 4: Warnung, wenn zutreffend
ElseIf MengeNichtZahl = True Then
'Warnung, wenn zutreffend
MsgBox "Bitte nur Zahlen als " & """Menge""" & " eintragen", _
48, "Eingabefehler"
'EingabeFehler 5: Warnung, wenn zutreffend
ElseIf MengeZuGross = True Then
'Warnung, wenn zutreffend
MsgBox "Menge hat über 7 Stellen!" & Chr(10) & Chr(10) & _
"Tip: darauf achten, Artikelvariante und Menge nicht zu vertauschen." _
, 48, "Eingabefehler"
'------IN ENTWICKLUNG-----------------------------
'EingabeFehler 6: Warnung, wenn zutreffend...
'-- Übertragung (keine Eingabefehler)
Else
'Automatische Berechnungen, etc. für Performance abschalten (=> "mod_Performance")
Call AutoModusAus
'für "DA_EingabeProtokoll" (hier)
'nächste, freie Zeile
longLast = Worksheets(wshtDA).Cells(Rows.Count, 1).End(xlUp).Row + 1
With Worksheets(wshtDA)
.Cells(longLast, 1).Value = CDate(txt_DatumIN)
.Cells(longLast, 2).Value = Time
.Cells(longLast, 3).Value = CDec(txt_ArtikelvarianteIN)
.Cells(longLast, 4).Value = CDec(txt_MengeIN)
.Cells(longLast, 5).Value = infoDA                  'aus Variable
'Textfelder
.Cells(longLast, 6).Value = CStr(txt_Walze1IN)
.Cells(longLast, 7).Value = CStr(txt_Walze2IN)
.Cells(longLast, 8).Value = CStr(txt_Walze3IN)
.Cells(longLast, 9).Value = CStr(txt_Walze4IN)
.Cells(longLast, 10).Value = CStr(txt_Walze5IN)
.Cells(longLast, 11).Value = CStr(txt_Walze6IN)
End With
'Bestätigungsmeldung
MsgBox "Eingabe erfolgreich", vbInformation, "Meldung"
'Arbeitsmappe speichern
ThisWorkbook.Save
Unload Me                                               'Userform neustarten
Usf_PDEingabe.Show
'Automatische Berechnungen, etc. für Performance einschalten (=> "mod_Performance")
Call AutoModusEin
End If
End Sub

Anzeige
AW: Teste mal
25.02.2018 13:48:07
Fennek

Sub F_en()
for i = 1 to 5
for j = i+1 to 6
if "txt_Walze" & i & "IN" = "txt_Walze" & j & "IN" then msgbox i & ", " & j
next j
next i
End Sub
mfg
AW: Teste mal
25.02.2018 14:44:10
Yannik
Funktioniert leider nicht.
Ich kann immer noch Munter weiter in der Userform identische Barcodes scannen, was ihn bei der
Übertragung nicht juckt.
Aber schon mal schöner Ansatz, die Textfelder (txt_Walze1IN bis txt_Walze6IN) dynamischer anzusprechen.
Wdh:
Es muss beim drücken auf "Eingabe übertragen" halt gewarnt werden, wenn z.Bsp. 2 oder mehr Textfelder denselben Barcode gescannt haben. Leere Textfelder soll er ignorieren.
Hab schon überlegt ob ich dem Compiler irgendwie sage, dass Textfelder mit inhalt als true angesehen werden und dann nur die "trues" miteinander verglichen werden (gleich = MSG)
Anzeige
AW: Teste mal
27.02.2018 05:17:11
Yannik
Wie cool ist das denn!! :)))
Klappt super. Find die Idee richtig genial umgesetzt!
Danke!
AW: Userform - Textfelder dürfen nicht identisch sein
25.02.2018 20:13:29
Daniel
HI
gehe so vor.
1. Verknüpfe jede Textbox mit einer Ausgabezelle.
dies machst du, in dem du die Adresse der Ausgabezelle (mit Tabellenblatt) in die Eigenschaft ControlSource schreibst:
ConrolSource: =Tabelle1!A1
Die Ausgabezellen der 6 Textboxen legst du am besten untereinander (A1:A6)
2. schreibe in die Zellen neben den Ausgabezellen (A1:A6) folgende Formel:
B1:B6 =Wenn(A1="";"";ZählenWenn($A$1:$A$6;A1))
3. Im Code von "Eingabe Übertragen" kannst du dann vorab folgende Prüfung ausführen lassen:
If Worksheetfunction.Max(Sheets("Tabelle1").Range("A1:A6")) > 1 Then
Msgbox "Eingabe doppelt"
Else
hier der Code, wenn keine doppelten vorliegen
End If
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige