簡體   English   中英

VBA:遞增存儲在字符串中的數字,同時保留其格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM