'//格式化字符串 Public Function SprintF(ByVal vString As String, ParamArray vPara() As Variant) As String Dim nCurrentFlag As Integer Dim nPos As Integer Dim nCurPos As Integer Dim nMaxArg As Integer Dim nArgCount As Integer Dim nLenFlags As Integer Dim nWork As String
Public Function SprintF(ByVal vString As String, ParamArray vPara() As Variant) As String
Dim nCurrentFlag As Integer
Dim nPos As Integer
Dim nCurPos As Integer
Dim nMaxArg As Integer
Dim nArgCount As Integer
Dim nLenFlags As Integer
Dim nWork As String
nMaxArg = UBound(vPara()) + 1
nLenFlags = Len(vString)
nCurrentFlag = 1
nArgCount = 0
nPos = InStr(nCurrentFlag, vString, "%")
Do While (nPos > 0)
If Mid$(vString, nPos + 1, 1) <> "%" Then
nArgCount = nArgCount + 1
nCurrentFlag = nPos + 1
Else
nCurrentFlag = nPos + 2
End If
nPos = InStr(nCurrentFlag, vString, "%")
Loop If nArgCount <> nMaxArg Then Err.Raise 450, , "Mismatch of parameters for string " & vString & ". Expected " & _
nArgCount & "but received " & nMaxArg & "." nCurrentFlag = 1
nCurPos = 1
nArgCount = 0
nWork = ""
nPos = InStr(nCurrentFlag, vString, "%") Do While (nPos > 0)
If Mid$(vString, nPos + 1, 1) <> "%" Then
nWork = nWork & Mid$(vString, nCurrentFlag, nPos - nCurrentFlag) & vPara(nArgCount)
nCurrentFlag = nPos + 2
nArgCount = nArgCount + 1
Else
nWork = nWork & Mid$(vString, nCurrentFlag, nPos - nCurrentFlag + 1)
nCurrentFlag = nPos + 2
End If
nPos = InStr(nCurrentFlag, vString, "%")
Loop
If nCurrentFlag <= nLenFlags Then nWork = nWork & Mid$(vString, nCurrentFlag, nLenFlags - nCurrentFlag + 1)
SprintF = nWork
End Function