在線時間1577 小時經驗3066威望0性別男最後登陸2015-1-11註冊時間2010-10-26閱讀權限70UID1244055積分3066帖子
3062精華0分享0
10397財富
142鮮花
0技術
- 等級 5EH鐵桿
EH鐵桿, 積分 3066, 距離下一級還需 134 積分
積分排行319帖子
3062精華0微積分0
|
2樓
發表於 2012-8-7 13:35:55
|
只看該做者
|
(樓主)
本帖最後由 引子玄 於 2012-8-7 13:58 編輯 2.5 格式化字符串 可使用Format函數規定輸出的字符串的格式,其語法爲: Format(expression[,format[,firstdayofweek[,firstweekofyear]]]) 其中,參數expression必須,爲任何有效的表達式;其他參數都可選。參數format表示所要採用的格式,參數firstdayofweek使用常數,表示一星期的第一天,參數firstweekofyear使用常數,表示一年的第一週。 在參數format中,使用字符「@」,表示空格或字符佔位符,若是在輸入的字符串相應位置有字符,則顯示該字符,不然顯示空格;使用字符「&」,表示空或字符佔位符,若是在輸入的字符串的相應位置有字符,則顯示該字符,不然不顯示;使用字符「<」,則將全部字符顯示爲小寫格式;使用字符「>」,則將全部字符顯示爲大寫格式;使用字符「!」,強制佔位符從左向右填滿, 知足默認爲從右向左。 例以下面的代碼: Dim strOut strOut = Format("8888888", "(@@@)&&&-&&&&") '返回( )888-8888 strOut = Format("8888888", "(&&&)&&&-&&&&") '返回()888-8888 在Format函數中,還能夠同時格式化普通字符串和空字符串,只須在指定的格式中用分號隔開兩個部分,第一部分用於非空字符串,第二部分用於空字符串。例如: strOut = Format("6666666", "(@@@)&&&-&&&&;No Phone") '返回( )666-6666 strOut = Format("", "(@@@)&&&-&&&&;No Phone") '返回No Phone 又如,下面的代碼將字母所有轉換爲大寫: Dim strOut strOut = Format("Hello", ">@@@@@") ‘返回HELLO 同理,可使用「<」將字母所有轉換爲小寫。 Format函數的簡要使用規則: (1) 容許用預先定義或用戶定義的格式來創建多種用於輸出字符串、數字和日期/時間數據的方法。 (2) 建立用戶定義的數值格式最多能夠有四個部分,每一個部分表明一種不一樣類型的數值,且用分號分隔。第一部分在單獨命名使用時可用於全部值,與其它多個部分一塊兒使用時只用於正數;第二部分用於負數;第三部分用於零值;第四部分用於Null值。 在參數format中沒必要包括全部四部分,但所用部分的數目決定了每個部分所定義的數值類型:只有一個部分,則應用於全部數值;有兩個部分,則第一部分應用於正數和零值,第二部分應用於負數;有三個部分,則第一部分用於正數,第二部分應用於負數,第三部分應用於零值;有四個部分,則每部分的使用如前所述。 若是忽略了一個部分,則該部分使用與定義正數的部分同樣的格式,例如: 「#.00;;#,##」 表示負數值與正數值使用同一種格式顯示。 若是參數含有命名格式,則只能有一個部分。 (3) 字符串值的用戶定義格式有兩個部分,第一部分可應用於全部值,第二部分只應用於Null值或零長字符串。 (4) 預約義的日期和時間格式以下: General Date 範例: Format("28/02/2007","General Date") 返回: 2007-2-28 Long Date 範例: Format("28/02/2007","Long Date") 返回: 2007年2月28日 Medium Date 範例: Format("28/02/2007","Medium Date") 返回: 07-02-28 Short Date 範例: Format("28/02/2007","Short Date") 返回: 2007-2-28 Long Time 範例: Format("17:30:03","Long Time") 返回: 17:30:03 Medium Time 範例: Format("17:30:03","Medium Time") 返回: 下午 05:30 Short Time 範例: Format("17:30:03","Short Time") 返回: 17:30 (5) 預約義的數值格式以下: General Number 範例: Format(123456.0789,"General Number") 返回: 123456.0789 Currency 範例: Format(123456.0789,"Currency") 返回: ¥123,456.08 Fixed 範例: Format(0.2,"Fixed") 返回: 0.20 Standard 範例: Format(123456.0789,"Standard") 返回: 123,456.08 Percent 範例: Format(.7321,"Percent") 返回: 73.21% Scientific 範例: Format(123456.0789,"Scientific") 返回: 1.23E+05 Yes/No 範例1: Format(0,"Yes/No") 返回: No 範例2: Format(23,"Yes/No") 返回: Yes True/False 範例1: Format(0,"True/False") 返回: False 範例2: Format(23,"True/False") 返回: True On/Off 範例1: Format(0,"On/Off") 返回: Off 範例2: Format(23,"On/Off") 返回: On (6) 建立用戶自定義的日期和時間格式的字符: C 元素:日期 顯示:基於當前Windows系統的短日期和短期國際設置格式的日期或時間。 範例:Format("28/02/2007 17:30:03","c") 返回:2007-2-28 17:30:03 dddddd 元素:日期 顯示:基於當前Windows系統的長日期國際設置格式的完整日期。 範例:Format("28/02/2007","dddddd") 返回:2007年2月28日 / 元素:日期分隔符 範例:Format("28/02/2007","mm-dd-yyyy") 返回:02-28-2007 d 元素:日 顯示:1~31範圍內的一個數字,無前導0。 範例:Format("02/02/2007","d") 返回:2 dd 元素:日 顯示:01~31範圍內的一個數字,有前導0。 範例:Format("02/02/2007","dd") 返回:02 ddd 元素:日 顯示:英文簡寫(Sun~Sat) 範例:Format("02/02/2007","ddd") 返回:Fri dddd 元素:日 顯示:英文全稱(Sunday~Saturday) 範例:Format("02/02/2007","dddd") 返回:Friday ddddd 元素:日期 顯示:基於計算機Windows國際設置短日期格式的日期。 範例:Format("02/02/2007","ddddd") 返回:2007-2-2 h 元素:小時 顯示:0~23範圍內的一個數字,無前導0。 範例:Format("05:08:06","h") 返回:5 hh 元素:小時 顯示:00~23範圍內的一個數字,有前導0。 範例:Format("05:08:06","hh") 返回:05 n 元素:分 顯示:0~59範圍內的一個數字,無前導0。 範例:Format("05:08:06","n") 返回:8 nn 元素:分 顯示:00~59範圍內的一個數字,有前導0。 範例:Format("05:08:06","nn") 返回:08 s 元素:秒 顯示:0~59範圍內的一個數字,無前導0。 範例:Format("05:08:06","s") 返回:6 ss 元素:秒 顯示:00~59範圍內的一個數字,有前導0。 範例:Format("05:08:06","ss") 返回:06 ttttt 元素:時間 顯示:基於12小時制的時間,包含Windows區域設置中指定的時間分隔符和前導0。 範例:Format("05:08:06","ttttt") 返回:5:08:06 AM/PM 元素:時間 顯示:用大寫的AM和PM表示的12小時制的時鐘格式。 範例:Format("17:08:06","hh:mm:ss AM/PM") 返回:05:08:06 PM am/pm 元素:時間 顯示:用小寫的am和pm表示的12小時制時鐘格式。 範例:Format("17:08:06","hh:mm:ss am/pm") 返回:05:08:06 pm A/P 元素:時間 顯示:12小時制時鐘格式,用大寫「A」表示AM,大寫「P」表示PM。 範例:Format("17:08:06","hh:mm:ss A/P") 返回:05:08:06 P a/p 元素:時間 顯示:12小時制時鐘格式,用小寫「a」表示am,小寫「p」表示pm。 範例:Format("17:08:06","hh:mm:ss a/p") 返回:05:08:06 p : 元素:時間分隔符 顯示:時間格式 範例:Format("17:08:06","hh:mm:ss") 返回:17:08:06 w 元素:星期幾 顯示:1~7範圍內的一個數字(1~7分別表示星期天到星期六)。 範例:Format("02/02/2007","w") 返回:6 ww 元素:周 顯示:1~54範圍內的一個數字。 範例:Format("02/02/2007","ww") 返回:5 m 元素:月 顯示:1~12範圍內的一個數字,無前導0。 範例:Format("02/02/2007","m") 返回:2 mm 元素:月 顯示:01~12範圍內的一個數字,有前導0。 範例:Format("02/02/2007","mm") 返回:02 mmm 元素:月 顯示:英文月份簡寫(Jan~Dec) 範例:Format("02/02/2007","mmm") 返回:Feb mmmm 元素:月 顯示:英文月份全稱(January~December) 範例:Format("02/02/2007","mmmm") 返回:February q 元素:季度 顯示:1~4範圍內的一個數字 範例:Format("02/02/2007","q") 返回:1 y 元素:一年中的某天 顯示:1~366範圍內的一個數字。 範例:Format("02/02/2007","y") 返回:33 yy 元素:年 顯示:00~99範圍內的一個兩位數字。 範例:Format("02/02/2007","yy") 返回:07 yyyy 元素:年 顯示:100~9999範圍內的一個四位數字。 範例:Format("02/02/2007","yyyy") 返回:2007 (7)用於建立用戶自定義數字格式的字符 0 說明:數字佔位符。若是參數expression所表明的數值在相應的0位置上有一個數字,則顯示這個數字,不然顯示0。所指定的小數點後的位數,使數值舍入爲給定的小數位數,但不影響小數點左邊的數字位數。 範例1:Format(23.675,"00.0000") 返回:23.6750 範例2:Format(23.675,"00.00") 返回:23.68 範例3:Format(2345,"00000") 返回:02345 範例4:Format(2345,"00.00") 返回:2345.00 # 說明:數字佔位符。若是參數expression所表明的數值在相應的#位置上有一個數字,則顯示這個數字,不然什麼也不顯示。 範例1:Format(23.675,"##.##") 返回:23.68 範例2:Format(23.675,"##.####") 返回:23.675 範例3:Format(12345.25,"#,###.##") 返回:12,345.25 . 說明:小數點佔位符。小數點佔位符實際顯示的字符由本機Windows系統國際設置格式決定。 % 說明:百分數佔位符。首先將參數expression所表明的數值乘以100,而後把它做爲百分數顯示。 範例:Format(0.25,"##.00%") 返回:25.00% , 說明:千位分隔符。實際顯示的字符由本機Windows系統國際設置格式決定。在格式定義中只須要給出一個千位分隔符。 範例:Format(1000000,"#,###") 返回:1,000,000 E-E+ e-e+ 說明:科學計數法格式。若是格式表達式在E-、E+或e-、e+的右邊至少有一個數字佔位符(0或#),數字就以科學計數法格式顯示數字,參數Format中所用的字母E或e在該數字和它的指數之間顯示。右邊的數字佔位符數目決定了要在指數中顯示的位數。使用E-或e-能夠在負指數前插入一個減號,使用E+或e+能夠在正指數前插入一個正號。 範例:Format(1.09837555,"######E-###") 返回:109838E-5 -+$ 說明:顯示一個直接量字符。 範例:Format(2345.25,"$#,###.##") 返回:$2,345.25 \ 說明:反斜槓後的字符以直接量字符顯示。能夠用反斜槓將某個特定格式的字符以直接量字符顯示。 範例:Format(0.25,"##.##\%") 返回:.25% (8) 用於建立用戶自定義字符串格式的字符 @ 說明:字符佔位符。若是expression在相應的@位置上有一個字符,就顯示這個字符,不然顯示一個空格。 範例:Format("VBA","\*@\*@@@@@") 返回:* * VBA & 說明:字符佔位符。若是expression在相應的&位置上有一個字符,就顯示這個字符,不然什麼也不顯示。 範例:Format("VBA","\*&&\*&&&&") 返回:**VBA < 說明:用小寫形式顯示全部字符。 範例:Format("VBA","<") 返回:vba > 說明:用大寫形式顯示全部字符。 範例:Format("vba",">") 返回:VBA ! 說明:從左向右處理佔位符(缺省狀況爲從右向左處理佔位符)。 [編程方法和技巧] (1) 使用沒有格式定義的Format函數格式化數字比使用Str函數格式化數字更好。Format函數與Str函數不一樣,它會把正數中通常保留用於表示符號的前導空格清除掉。 (2) 可使用Format函數以1000爲單位對數字進行標度,作法是在語句中小數點的左邊用一個千位分隔符(,)表示標度數字的一個千位;可使用多個千位分隔符。例如: Format(1000000,"##0,.") 返回:1000. Format(1000000,"##0,,.") 返回:1. 2.6 查找字符串 2.6.1 InStr函數 可以使用InStr函數返回一字符串在另外一字符串中的位置,所以,也可使用該函數肯定一個字符串中是否包含有另外一個字符串。其語法爲: InStr([Start,]string1,string2[,compare]) 其中,參數Start爲可選參數,設置查找的起點,若是省略,則從第一個字符的位置開始查找,當指定了參數Compare時,則要指定此參數。參數string1爲被查找的字符串,參數string2爲要查找的字符串,這兩個參數都是必需的。 若是在String1中沒有找到String2,返回0;若是找到String2,則返回String2第一個出現的首字符位置(即1到String1的長度);若是String2的長度爲零,返回Start。 可看看下面的示例: Sub test() Dim SearchString, SearchChar, MyPos SearchString = "XXpXXpXXPXXP" '被搜索的字符串 SearchChar = "P" '要查找字符串 "P" '從第四個字符開始,以文本比較的方式找起,返回值爲 6(小寫 p) '小寫 p 和大寫 P 在文本比較下是同樣的 MyPos = InStr(4, SearchString, SearchChar, 1) Debug.Print MyPos '從第一個字符開使,以二進制比較的方式找起,返回值爲 9(大寫 P) '小寫 p 和大寫 P 在二進制比較下是不同的 MyPos = InStr(1, SearchString, SearchChar, 0) Debug.Print MyPos '缺省的比對方式爲二進制比較(最後一個參數可省略) MyPos = InStr(SearchString, SearchChar) '返回 9 Debug.Print MyPos MyPos = InStr(1, SearchString, "W") '返回 0 Debug.Print MyPos End Sub 2.6.2 InStrRev函數 也可使用InStrRev函數返回一個字符串在另外一個字符串中出現的位置,與InStr函數不一樣的是,從字符串的末尾算起。其語法爲: InStrRev(String1,String2[,[Start[,compare]) 參數String1爲被查找的字符串,參數String2爲要查找的字符串,這兩個參數都是必需的。參數Start爲可選參數,設置每次查找開始的位置,若忽略則使用-1,表示從上一個字符位置開始查找。參數Compare爲可選參數,表示所使用的比較方法,若是忽略則執行二進制比較。 下面的示例使用了InStr函數和InStrRev函數,相應的結果不一樣: Sub test() Dim myString As String Dim sSearch As String myString = "I like the functionality that InsStrRev gives" sSearch = "th" Debug.Print InStr(myString, sSearch) '返回8 Debug.Print InStrRev(myString, sSearch) '返回26 End Sub - - - - - - - - - - - - - - - - - - - - - - - 2.7 提取字符/字符串 2.7.1 Left函數 Left函數能夠從字符串的左邊開始提取字符或指定長度的字符串,即返回包含字符串中從左邊算起指定數量的字符。其語法爲: Left(String,CharNum) 其中,若是參數String包含Null,則返回Null;若是參數CharNum的值大於或等於String的字符數,則返回整個字符串。 例如,下面的代碼返回指定字符串的前兩個字符: strLeft=Left(「This is a pig.」,2) Left函數與InStr函數結合,返回指定字符串的第一個詞,例以下面的代碼: str = "This is a pig." FirstWord = Left(str, InStr(str, " ") - 1) 2.7.2 Right函數 與Left函數不一樣的是,Right函數從字符串的右邊開始提取字符或指定長度的字符串,即返回包含字符串中從右邊起指定數量的字符。其語法爲: Right(String,CharNum) 例如: AnyString = "Hello World" ' 定義字符串 MyStr = Right(AnyString, 1) ' 返回 "d" MyStr = Right(AnyString, 6) ' 返回 " World" MyStr = Right(AnyString, 20) ' 返回 "Hello World" 若是存放文件名的字符串中沒有反斜槓(\),下面的代碼將反斜槓(\)添加到該字符串中: If Right(strFileName,1) <> 「」 Then strFileName=strFileName & 「\」 End If 下面的函數假設傳遞給它的參數或者是文件名,或者是包含完整路徑的文件名,從字符串的末尾開始返回文件名。 Private Function ParseFileName(strFullPath As String) Dim lngPos As Long, lngStart As Long Dim strFilename As String lngStart = 1 Do lngPos = InStr(lngStart, strFullPath, "\") If lngPos = 0 Then strFilename = Right(strFullPath, Len(strFullPath) - lngStart + 1) Else lngStart = lngPos + 1 End If Loop While lngPos > 0 ParseFileName = strFilename End Function 2.7.3 Mid函數 Mid函數能夠從字符串中提取任何指定的子字符串,返回包含字符串中指定數量的字符的字符串。其語法爲: Mid(String,Start[,Len]) 其中,若是參數String包含Null,則返回Null;若是參數Start超過了String的字符數,則返回零長度字符串(「」);若是參數Len省略或超過了文本的字符數,則返回字符串從Start到最後的全部字符。 例如,下面的代碼: Str=Mid(「This is a pig.」,6,2) 將返回文本「is」。 下面的代碼: MyString = "Mid Function Demo" '創建一個字符串 FirstWord = Mid(MyString, 1, 3) '返回 "Mid" LastWord = Mid(MyString, 14, 4) '返回 "Demo" MidWords = Mid(MyString, 5) '返回 "Funcion Demo" Mid函數經常使用於在字符串中循環,例如,下面的代碼將逐個輸出字符: Dim str As String Dim i As Integer Str=」Print Out each Character」 For i=1 to Len(str) Debug.Print Mid(str,i,1) Next i 2.7.4 Mid語句 Mid語句能夠用另外一個字符串中的字符替換某字符串中指定數量的字符。其語法爲: Mid(Stringvar,Start[,Len])=string 其中,參數Stringvar表明爲要被更改的字符串;參數Start表示被替換的字符開頭位置;參數Len表示被替換的字符數,若省略則所有使用string;參數string表示進行替換的字符串。 被替換的字符數量總小於或等於Stringvar的字符數;若是string的數量大於Len所指定的數量,則只取string的部分字符。示例以下: MyString = "The dog jumps" ' 設置字符串初值 Mid(MyString, 5, 3) = "fox" ' MyString = "The fox jumps" Mid(MyString, 5) = "cow" ' MyString = "The cow jumps" Mid(MyString, 5) = "cow jumped over" ' MyString = "The cow jumpe" Mid(MyString, 5, 3) = "duck" ' MyString = "The duc jumpe" - - - - - - - - - - - - - - - - - - - - - - - 2.8 刪除空格 LTrim函數刪除字符串前面的空格; RTrim函數刪除字符串後面的空格; Trim函數刪除兩頭的空格。 示例以下: MyString = " <-Trim-> " ' 設置字符串初值 TrimString = LTrim(MyString) ' TrimString = "<-Trim-> " TrimString = RTrim(MyString) ' TrimString = " <-Trim->" TrimString = LTrim(RTrim(MyString)) ' TrimString = "<-Trim->" ' 只使用 Trim 函數也一樣將兩頭空格去除 TrimString = Trim(MyString) ' TrimString = "<-Trim->" - - - - - - - - - - - - - - - - - - - - - - - |
|