Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
932to936
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
932to936
932to936
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gültigkeitsprüfung

Gültigkeitsprüfung
12.12.2007 13:38:00
Jonny
Hallo Leute,
ich würde mal gerne wissen ob es in UserForm möglich ist,
während der Eingabe von Werten in eine Textbox diesen gleichzeitig auf Gültigkeit zu prüfen.
In der Tabelle hatte ich das mit der
=NICHT(ZÄHLENWENN($H$1:$H$2000;H1)>1)
Formel gelöst, doch funktioniert nur wenn ich die Werte direkt in die Tabellenzeilen schreibe.
Fülle ich die Zeile über Das UserForm funktioniert das ganze nicht mehr.
Zur Info: die Werte in Spalte H dürfen nur 1x vorkommen.
Meine Werte haben folgenden Format z.B. 01/001 bis 99/999
Optimal währe wenn das Programm, bei der Eingabe, mir schon mal die nächste,
jeweilige freie Nummer vorschlagen würde. Das ist aber wahrscheinlich zu viel verlangt.
Vielen Dank im Voraus
Jonny

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gültigkeitsprüfung
12.12.2007 15:30:00
Horst
Hi,
nimm statt einer Textbox eine Combobox, dann hast du standardmäßig genau dieses Verhalten.
mfg Horst

AW: Gültigkeitsprüfung
12.12.2007 15:48:00
Jonny
Hallo Horst,
entschuldige, ich bin was VBA betrifft absoluter Neuling,
muss ich bei der Combobox was besonderes aktivieren?
Einfach nur austauschen funktioniert nicht.
Gruß
Jonny

AW: Gültigkeitsprüfung
12.12.2007 15:50:00
Horst
Hi,
wieso nicht, zeig mal nen Codeschnipsel.
mfg Horst

AW: Gültigkeitsprüfung
12.12.2007 16:02:31
Jonny
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertWarning, Operator _
:=xlBetween, Formula1:="=NICHT(ZÄHLENWENN($H$5:$H$5000;H5)>1)"
.IgnoreBlank = True
.InCellDropdown = True
.ErrorTitle = "Fehler"
.ErrorMessage = "Fehler!"
.ShowError = True
End With

Anzeige
AW: Gültigkeitsprüfung
12.12.2007 16:45:21
Horst
Hi,
sorry, ich hab das gründich falsch verstanden.
mfg Horst

AW: Gültigkeitsprüfung
13.12.2007 01:38:27
Daniel
Hi
ok, das mit dem nächsten Wert anzeigen wird natürlich etwas schwierig, da deine Eingaben ja keine Zahlen, sondern Texte sind, sonst könnte man sich über die MAX-Funktion den nächsten Freien Wert Anzeigen lassen.
Zur Prüfung:
in Userforms ist es ja meistens so, daß man eine Eingabe per Button bestätigen muss.
ich löse das dann so, daß ich den Commanbutton dazu zunächst einmal auf ENABLED = FALSE setze und erst freigbe, wenn die Eingabe den anforderungen entspricht.
Ein Makro dazu könnte so aussehen:

Private Sub TextBox1_Change()
Dim EingabeOK As Boolean
EingabeOK = False
With TextBox1
If Len(.Text) = 6 Then
If IsNumeric(Left(.Text, 2)) And IsNumeric(Right(.Text, 3)) Then
If Mid(.Text, 3, 1) = "/" Then
If WorksheetFunction.CountIf(Range("$H$1:$H$2000"), .Text) = 0 Then EingabeOK =  _
True
End If
End If
End If
End With
CommandButton1.Enabled = EingabeOK


die Prüfungen sind:
- länge des eingegbenen Strings = 6
- Linker und Rechter Teilstring sind Zahlen
- das 3. Zeichen ist ein Backslash
- der Wert kommt in der Liste nicht vor.
nur wenn alles erfüllt ist, kann der Commandbutton1 geklickt werden.
Gruß, Daniel

Anzeige
AW: Gültigkeitsprüfung
13.12.2007 10:04:04
Jonny
Hallo Daniel,
vielen Dank für deinen Tipp! Entschuldige, ich habe mich ein bisschen falsch ausgedrückt.
Meine Textbox ist bereits in dem (z.B. 01/001) Format definiert und zwar werden die
Werte aus zwei separaten Textboxen übernommen. in Textbox2 gebe ich die
Gruppen-Nummer (z.B.01) ein und in Textbox3 gebe ich die Laufende-Nummer (z.B.001) ein.
Ich habe lediglich folgendes benötigt:

Private Sub Textbox1_Change()
Dim EingabeOK As Boolean
EingabeOK = False
With Textbox1
If WorksheetFunction.CountIf(Range("$H$1:$H$2000"), .Text) = 0 Then EingabeOK =  _
True
End With
Commandbutton1.Enabled = EingabeOK
End Sub


und funktioniert bestens!
Nochmals Danke!
Wäre es denn möglich mit der erwähnten MAX-Funktion den nächsten freien Wert
in Textbox3 anzeigen, in Verbindung mit Textbox2. Da die Felder nur Zahlenwerte enthalten?
Gruß
Jonny

Anzeige
AW: Gültigkeitsprüfung
13.12.2007 20:12:00
Daniel
Hi
du könntest dir nächste freie laufende Nummer der Gruppe über folgende Funktion ausgeben lassen:

Private Function NächsteFreieLfdNr_Gruppe(Zellbereich As Range, Gruppe As String) As string
Dim arr
Dim Wert
Dim Max As Integer
Max = 0
arr = Zellbereich.Value
For Each Wert In arr
If Left(Wert, 2) = Gruppe Then
If CInt(Right(Wert, 3)) > Max Then Max = CInt(Right(Wert, 3))
End If
Next
NächsteFreieLfdNr_Gruppe = format(Max + 1,"000")
End Function


aufrufen müsstest du das ganze so:


Textbox3.text = NächsteFreieLfdNr_Gruppe(Range("H1:H2000"), Textbox2.text)


wobei Textbox2 die Gruppennr als Text in der Form mit führender 0 enthalten muss.
Gruß, Daniel

Anzeige
AW: Gültigkeitsprüfung
14.12.2007 09:51:00
Jonny
Hallo Daniel,
danke für das Programm! Funktioniert klasse! Habe wieder mal was dazu gelernt.
Ein kleines Problem habe ich allerdings noch und zwar die Produkte die unter den Nummern abgelegt sind können zwischen durch ausfallen so das ich dann den Fall habe das sich Lücken in der Nummern Reihenfolge bilden, die ich wiederum den neuen Produkten zuweisen kann.
Gibt es den die Möglichkeit die nächste frei Nummer zu ermitteln und nicht die Größte Zahl?
Gruß
Jonny

AW: Gültigkeitsprüfung
15.12.2007 00:44:00
Daniel
Hi
wenn die Daten sortiert sind, ja
dann brauchst du ja nur zu prüfen, ob zwei benchbarte Werte den Abstand 1 haben, wenn nein, kannst du mit EXIT FOR die Schleife abbrechen und den Lückenwert verwenden.
wenn die Daten nicht sortiert sind, weiß ich auch keine Lösung.
Gruß, Daniel

Anzeige
AW: Gültigkeitsprüfung
18.12.2007 09:35:52
Jonny
Hallo Daniel,
die Datensortierung habe ich bereits eingebaut, werde es mal mit deinem Vorschlag versuchen.
Danke für den Tipp!
Gruß
Jonny

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige