Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
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
In Textbox nur Zahlen aus einer Range zulassen
06.01.2016 18:29:42
Andre
Hallo Ihr Spezialisten,
ein gesundes neues Jahr wünsche ich.
Ich habe eine Frage und hoffe Ihr könnt mir Helfen.
Ich habe eine Userform in der eine Textbox1 vorhanden ist. Es dürfen nur festgelegte 3stellige Zahlen (Mitarbeiternummer) möglich sein. Das funktioniert auch alles.
Um auch meinem Chef die Möglichkeit zu geben, in meiner Abwesenheit andere Zahlen zuzulassen (wenn ich krank wäre oder ähnlich)wäre es von Vorteil, die zulässigen Zahlen kämen aus einem Tabellenbereich des selben Workbook. Das Tabellenblatt heißt in diesem Fall "Chef" und die zulässigen Nummern stehen in dem Bereich B2 bis B35.
Gibt es eine Möglichkeit oder eine Idee, wie man das bewerkstelligen kann? So das man wechselnde Nummern nicht im Script ändern muss.
anbei das Script so wie es bisher läuft.
Vielen Dank für die Antwort im Voraus.
Gruß André
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Zähl As Long
Dim PinArray As String
Dim PinListe() As String
Dim PinKorrekt As Boolean
'Array mit gültigen Personalnummern erstellen
PinArray = "000 111 141 114 119 116 129 115 123 127 125 118 131 132 137 134 122 124 136 126  _
143 121 138 134 128 112 133 117 139 113 135 144" 'das entsprechend anpassen
PinListe = Split(PinArray)
PinKorrekt = False
'Prüfen ob in Textbox eine gültige Personalnummer eingegeben wurde
For Zähl = LBound(PinListe) To UBound(PinListe)
If Me.TextBox1 = PinListe(Zähl) Then
PinKorrekt = True
Exit For
End If
Next Zähl
'Wenn Pin nicht gültig dann MsgBox und Fokus bleibt auf Textbox
If Not PinKorrekt Then
MsgBox "Die Ma Nr. ist nicht bekannt."
Me.TextBox1 = ""
Cancel = True
End If
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Array aus Bereich
06.01.2016 18:41:14
Michael
Hi André,
Du kannst mal http://www.online-excel.de/excel/singsel_vba.php?f=152
überfliegen...
Im Prinzip weißt Du ja, was ein Array ist, Du mußt es nur aus dem Tabellenblatt auslesen, etwa mit:
Dim PinArrayListe as Variant
PinArrayListe=Sheets("Chef").Range("B2:B35")
Dabei ist nur zu beachten, daß auf die Art IMMER ein *zwei*dimensionales Array eingelesen wird, d.h. bei LBound/Ubound gibst Du (PinArrayListe,1) (,2 wäre denn die zweite Dimension) ein und innerhalb der Schleife entsprechend PinArrayListe(Zähl,1).
Schöne Grüße,
Michael

Anzeige
AW: Array aus Bereich
07.01.2016 17:02:46
Andre
Hallo Michael,
ich habe versucht deine Anregung umzusetzen. Leider ist das weit über meinen Kenntnissen. Das Script so anzupassen gelinkgt mir leider nicht. Ich danke dir jedoch vielmals für deine Unterstützung.
Falls es dir keine Mühe macht, und du das Script im ganzen anpassen könntest wäre es toll, sonst probiere ich es weiter.
Vielen Dank noch einmal
MfG Andre

Beispiel anbei
08.01.2016 18:07:10
Michael
Hi André,
eigentlich geht es noch viel einfacher, und zwar mit "Suchen" bzw. .find:
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim PinKorrekt As Boolean
Dim c As Range
PinKorrekt = False
Set c = Sheets("Chef").Range("B2:B35").Find(what:=Me.TextBox1, lookat:=xlWhole)
If Not c Is Nothing Then PinKorrekt = True
'Wenn Pin nicht gültig dann MsgBox und Fokus bleibt auf Textbox
If Not PinKorrekt Then
MsgBox "Die Ma Nr. ist nicht bekannt."
Me.TextBox1 = ""
Cancel = True
End If
End Sub
Datei anbei: https://www.herber.de/bbs/user/102681.xls
Schöne Grüße,
Michael

Anzeige
AW: Beispiel anbei
11.01.2016 19:39:30
Andre
Hallo Michael,
vielen Dank für die Mühe. Das klappt ja super.
MfG André

Freut mich, danke für die Rückmeldung owT
12.01.2016 22:42:59
Michael

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige