AW: Fortlaufende Rechnungsnummer ohne Speichern
06.08.2014 13:55:56
JoWE
Hallo,
vllt. ein Ansatz für die Lösung des Problems:
Eine Textdatei mit der jeweils aktuellen RNR liegt zentral in einem Ordner des Servers oder auf einem Ordner eines Rechners, auf den alle Sachbearbeiter Zughriff haben.
Der folgende Code liest die letzte eingetragene Rechnungsnummer aus dieser Textdatei ein, erhöht sie um den Wert 1 und schreibt den neuen Wert (als Vorschlag) in eine Zelle eines neu befüllten Rechnungsformulares:
Sub getLastRNR()
Dim txtFName As String
txtFName = "C:\Daten\RG_Nummern.txt"
Open txtFName For Input As #1
While Not EOF(1)
Line Input #1, strText
Wend
Close #1
Sheets("Rechnungsformular").Range("E4") = _
Left(strText, InStr(1, strText, "/") - 1) * 1 + 1 _
& "/" & Mid(strText, InStr(1, strText, "/") + 1, 4)
End Sub
Das sieht dann so aus:
hier der eingelesene Wert = 12350/2014;06.08.2014;13:22:34;SB: Schroth
so sieht dann der neue (vorgeschlagene) Wert aus: 12351/2014 (Datum, Uhrzeit und Sachbearbeitername stammen aus anderen Feldern des Formulares, sind für die eigentl. RNR unerheblich, dienen aber der Recherche in der Textdatei zur Nachvollziehbarkeit).
Der folgende Code hängt die Rechnungsnummer aus dem Rechnungsformular als neue letzte Zeile in die vorhandene Textdatei:
Sub setNewRNR()
Dim txtFName As String
Dim RNR As String
txtFName = "C:\Daten\RG_Nummern.txt"
With Sheets("Rechnungsformular")
RNR = .Cells(4, 5) & ";" _
& Date & ";" _
& Time() & ";" _
& .Range("E5") 'in E5 steht der Name des Sachbearbeiters
End With
Open txtFName For Append As #1
Print #1, Chr(13) & Chr(10)
Print #1, RNR
Close #1 '
End Sub
Die neue letzte RNR sieht dann so aus: 12351/2014;06.08.2014;13:50:12;SB: Weber
Sofern der Sachbearbeiter ein anderer war.
Gruß
Jochen