Guten Abend allerseits
Ich bin neu hier - auch in Bezug auf VBA ...
Jetzt erst, nach langem herumbasteln, suchen und zeitverschwenden wende ich mich an die Fachkräfte und hoffe auf Eure Unterstützung.
Mein Problem:
Ich habe ein Access Formular erstellt und das Eingabetextfeld "Personen_ID" von der entsprechenden Tabelle ausgewählt.
So weit so gut.
Im Formular habe ich folgendes Modul (Modulname = mod_PersID_Zaehler) welches den folgenden Code beinhaltet:
Function GetNextNumber(Optional lastNr As String) As String
Const pre As String = "Z"
Dim maxNR As String
Dim nStart As Integer
Dim v1 As String, v2 As String, i As Integer, j As Integer, k As Integer
v1 = "A"
v2 = "A"
nStart = 0
If lastNr <> "" Then
v1 = Left(Mid(lastNr, 2, 2), 1)
v2 = Right(Mid(lastNr, 2, 2), 1)
nStart = Val(Right(lastNr, 4)) + 1
If Asc(v2) >= 90 And Asc(v1) >= 90 And nStart >= 9999 Then
MsgBox "Keine Nummer mehr"
Exit Function
' ElseIf Asc(v2) >= 90 And Asc(v1) >= 90 Then
ElseIf Asc(v2) >= 90 Then
v2 = "A"
v1 = Chr(Asc(v1) + 1)
End If
If nStart > 9999 Then
nStart = 0
v2 = Chr(Asc(v2) + 1)
End If
End If
For j = Asc(v1) To 90
For k = Asc(v2) To 90
For i = nStart To 9999
maxNR = pre & Chr(j) & Chr(k) & Format(i, "0000")
GetNextNumber = maxNR
If lastNr = "" Then Debug.Print maxNR Else Exit Function
Next i
Next k
Next j
End Function
So weit so gut:
Ich möchte jetzt per "Doppelklick" auf das Textfeld "Personen_ID") ein Ereignis ausführen, welches auf das obengenannte Modul (d.h. auf die Funktion darin "GetNextNumber" zugreift, dieses ausführt, und mir den Wert wieder ins selbige (gleiche) Textfeld im Formular als Text hineinschreibt (d.h. per Doppelklick - automatisch). Dabei soll der Code des Moduls so abgeändert werden, dass man nicht erst eine Zahl per Hand (tippen) eingeben muss - wie bisher, sondern dass es nach einer aufsteigenden Nummerierung selbständig Nummern generieren kann nach Doppelklick.
D.h. die alphanumerische PersonenID beginnt wie bisher mit "Z" am Anfang. Der Niedrigste Wert wäre ZAA0001 und der höchstmögliche Wert wäre ZZZ9999.
Der Startwert ist eigentlich "ZAA" ...
Beginnen soll es mit ZAA0001 (d.h. die ersten 3 Ziffern müssen Buchstaben sein!) und sich immer um eins erhöhen d.h. ZAA0002, ZAA0003, ZAA0004... wenn es bei ZAA9999 angelangt ist, soll es zu ZAB0001 wechseln und ab dort wieder hochzählen (z.B. ZAB0001, ZAB0002, etc. etc. etc...) bis eben ZZZ9999
Das Ereignis für das Textfeld könnte so ähnlich aussehen (aber wie gesagt, habe ich hier ebenfalls keine Ahnung!):
Private Sub Personen_ID_DblClick(Cancel As Integer)
... etc...
End Sub
Bitte helft mir auch bei dieser Ereignisprozedur!
Mal soweit ...
Vielen Dank
Pavel
|