設為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 4800|回復: 6
打印 上一主題 下一主題

[模塊/函數(shù)] [原創(chuàng)]非常好用的Format函數(shù)

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2008-7-6 17:43:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
也許你在其他開發(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
指定的對象是 空,則格式項將忽略。


2expression必須使用前導大括號字符和后綴大括號字符,即“{”和“}”。若要在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ù)的時候要特別注意這點。

本帖被以下淘專輯推薦:

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享 分享淘帖1 訂閱訂閱
2#
 樓主| 發(fā)表于 2008-7-6 17:43:47 | 只看該作者
這個函數(shù)其實很有用途,比如我們經常使用的SQL語句設置參數(shù)的時候。當使用 &  經常字符串串接的時候,很容易出現(xiàn)錯誤。我們使用這個函數(shù)就變得異常簡單了。

Sub Test2()
Dim str As String
    str = "SELECT * FROM [Table] WHERE ID ={0} AND Name ='{1}';"
    Debug.Print ArrayFormat(str, 25, "fans")
End Sub

返回:SELECT * FROM [Table] WHERE ID =25 AND Name ='fans';

看到了吧,這就是這個短短的函數(shù)的威力。

當我們配合正則表達式一起來定義這個函數(shù)的時候,它的威力就更強大了,可以實現(xiàn)很多復雜的功能。
3#
發(fā)表于 2008-7-6 20:02:55 | 只看該作者
很女子,很弓雖大,學習ing...... [:30]

點擊這里給我發(fā)消息

4#
發(fā)表于 2008-7-7 09:46:38 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
5#
發(fā)表于 2008-7-7 10:22:31 | 只看該作者
的確很不錯啊,我慢慢體會一下。
6#
發(fā)表于 2008-7-19 15:35:30 | 只看該作者
能否弄個庫??????????[:30]
7#
 樓主| 發(fā)表于 2016-12-13 22:47:01 | 只看該作者
補充例子


本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 05:00 , Processed in 0.109799 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表