[英]VBA: incrementing a number stored in a string while preserving it's formatting
在我正在編寫的 VBA 宏中,我需要遞增一個存儲在字符串變量中的數字,例如“1”、“01”、“001”等。它也可以是“010”、“000123” “, 等等。 我知道 Format 調用可以使用 Format(2, "00#") 將遞增的數字(例如“2”轉換為“002”),但我不知道如何首先讀取原始數字的格式存儲它的格式並在增量后重新應用它。 我能想到的唯一方法是計算尾隨零,但是沒有更好的方法嗎?
這個 function 將保留前導零:
Function IncrementNumberLeadingZeros(sVal As String, Change As Long) As String
Dim L As Long
Dim I As Long
Dim Frmt As String
L = Len(sVal)
For I = 1 To L
Frmt = Frmt & "0"
Next I
IncrementNumberLeadingZeros = Format(CLng(sVal) + Change, Frmt)
End Function
我這樣測試:
Sub test()
Debug.Print IncrementNumberLeadingZeros("00210", 1)
End Sub
Output 是:
或者,為我們的朋友提供一點幫助,甚至更短:
Function IncrementNumberLeadingZeros(sVal As String, Change As Long) As String
IncrementNumberLeadingZeros = Format$(CLng(sVal) + Change, String(Len(sVal), "0"))
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.