|
也許你在其他開發(fā)語言中看到過,或者看到過類似的語句:Format("http://mail.qq.com/loginpage.asp?id={0}", 2364783),這個Format會返回什么樣的結果呢?它返回的是:http://mail.qq.com/loginpage.asp?id=2364783。怎么樣很有意思吧?但在VBA開發(fā)中我們想用卻沒有這樣的函數(shù),那怎么辦?嘿嘿!還是我們自己動手豐衣足食。
Public Function ArrayFormat(expression As String, ParamArray formatException()) As String
Dim strFind As String, strReplace As String, strTemp As String
Dim i As Integer
strTemp = expression
For i = 0 To UBound(formatException)
strFind = "{" & i & "}": strReplace = formatException(i)
strTemp = Replace(strTemp, strFind, strReplace)
Next
ArrayFormat = strTemp
End Function
代碼很短吧,只有10行。但它會帶給我們一份不一樣的感受。
我們先來個測試:
Sub Test()
Dim str As String
str = "他們分別來自:{0}、{1}、{2}、{3}、{4}、{5}"
Debug.Print ArrayFormat(str, "北京", "上海", "廣州", "山東", "福建", "海南")
End Sub
執(zhí)行上面的代碼可在立即窗體中看到:他們分別來自:北京、上海、廣州、山東、福建、海南。這相對于用 & 來串接字符串是否要方便些呢?
使用這個函數(shù)有以下注意事項:
1、格式項的語法是{index}。index 為從零開始的整數(shù),指示對象列表中要格式化的元素。如果由 index
指定的對象是 空,則格式項將忽略。
2、expression必須使用前導大括號字符和后綴大括號字符,即“{”和“}”。若要在expression中指定單個大括號字符,請指定兩個前導大括號字符或后綴大括號字符(即“{{”或“}}”)。
3、當可選參數(shù)formatSting的的最大下標(即:UBound(formatException))與格式項中index 的數(shù)值不相符時,不相符的部分都將被忽略。
例如:
Sub Test1()
Dim str As String
str = "他們分別來自:{0}、{1}、{2}、{3}"
Debug.Print ArrayFormat(str, "北京", "上海", "廣州", "山東", "福建", "海南")
End Sub
返回:他們分別來自:北京、上海、廣州、山東。
Sub Test2()
Dim str As String
str = "他們分別來自:{0}、{1}、{2}、{3}、{4}、{5}"
Debug.Print ArrayFormat(str, "北京", "上海", "廣州")
End Sub
返回:他們分別來自:北京、上海、{2}、{3}、{4}、{5}。
所以在使用這個函數(shù)的時候要特別注意這點。 |
|