Für ein VBA-Makro für Rechnungen hat sich diese Funktion als nützlich erwiesen. Aufgabe war, bei jedem Start auf Basis der zuletzt verwendeten Rechnungs-Nr. (z. B. "R-2002-01-0001") die nächste Rechnungs-Nr. automatisch zu erzeugen (z. B. "R-2002-01-0002"), indem zur letzten Ziffernkolonne eine 1 addiert wird. Vorteil: Die Formatierung der Ausgangs-Rechungs-Nr. kann daher beliebig sein. ' Gibt einen Wert zurück, bei dem der hintere Teil um ' eins hochgezählt wird, wenn er als Zahl interpretiert ' werden kann, sonst wird "-1" angehangen. ' ' Beispiele: ' StringIncrease("ABC-00123") --> "ABC-00124" ' StringIncrease("ABC") --> "ABC-1" ' ===================================================== Public Function StringIncrease(vValue As Variant) _ As Variant ' Anzahl Zeichen des Übergabewertes Dim iLen As Integer iLen = Len(vValue) ' Stelle, an dem die letzte Nicht-Ziffer auftaucht Dim iPosSep As Integer iPosSep = iLen ' Aktuell gescanntes Zeichen im Übergabewert Dim sChar As Variant sChar = Mid(vValue, iPosSep, 1) ' Letzte Nicht-Ziffer suchen Do While IsNumeric(sChar) And iPosSep > 0 iPosSep = iPosSep - 1 If iPosSep > 0 Then sChar = Mid(vValue, iPosSep, 1) End If Loop ' Wenn letztes Zeichen keine Ziffer If iPosSep = iLen Then vValue = vValue & "-1" ' Sonst letzten Ziffern-Bereich manipuliern Else ' Anzahl Stellen des Ziffern-Bereiches ' (zunächst Original-Länge) Dim iDigitsCount As Integer iDigitsCount = Len(Right(vValue, iLen - iPosSep)) ' Eins zum Ziffern-Bereich addieren Dim iDigits As Integer iDigits = CInt(Right(vValue, iLen - iPosSep)) + 1 ' Wenn nun mehr Stellen benötigt werden, ' korrigieren If Len(Format(iDigits)) > iDigitsCount Then iDigitsCount = Len(Format(iDigits)) End If ' Neu zusammensetzen vValue = Left(vValue, iPosSep) & _ Format(iDigits, String(iDigitsCount, "0")) End If StringIncrease = vValue End Function Beispiel Private Sub Command1_Click() Text1.Text = StringIncrease(Text1.Text) End Sub Dieser Tipp wurde bereits 22.309 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |