在VBA中(當(dāng)然不僅是VBA,包括所有編程語言),處理文本、字符串是一項(xiàng)非常重要的內(nèi)容,VBA也內(nèi)置很多字符處理函數(shù),我們一起來學(xué)習(xí)一下:1、InStr函數(shù):返回子字符串在字符串中第一次出現(xiàn)的位置,搜索方向從左到右。InStr([start],string1,string2,[compare])。
'// start(可選):搜索開始的位置
'// string1:要搜索的字符串
'// string2:要查找的子字符串
'// compare(可選):指定比較的類型。0表示二進(jìn)制比較,1表示文本比較
Dim position As Integer
position = InStr(1, "Hello World", "World") '返回7
(1)判斷一個(gè)字符串中是否包含另一個(gè)字符串(2)在需要提取特定字符串的時(shí)候,取得開始或結(jié)束位置2、InStrRev函數(shù):返回子字符串在字符串中最后一次出現(xiàn)的位置,搜索方向從右到左。
語法:
InStrRev(string1, string2, [start], [compare])
'// string1:要搜索的字符串
'// string2:要查找的子字符串
'// start(可選): 搜索開始的位置,從右向左計(jì)數(shù)
'// compare(可選): 比較方式,同InStr
Dim position As Integer
position = InStrRev("Hello World", "o") '返回8
(1)通過最后一個(gè)“.”的位置,獲取文件擴(kuò)展名3、LCase函數(shù):將字符串中的所有字符轉(zhuǎn)為小寫,LCase(string)。
4、UCase函數(shù):將字符串中的所有字符轉(zhuǎn)為大寫,UCase(string)。
5、Left函數(shù):從字符串左側(cè)開始,返回指定數(shù)量的字符,Left(string, length)。
6、Right函數(shù):從字符串右側(cè)開始,返回指定數(shù)量的字符,Right(string, length)。7、Mid函數(shù):從字符串的指定位置開始,返回特定數(shù)量的字符,Mid(string, start, [length])。start表示開始位置,通常會(huì)結(jié)合InStr、InStrRev函數(shù)使用。8、Trim函數(shù):刪除字符串兩側(cè)的空格,還有Ltrim、Rtrim分別刪除字符串左、右空格。9、Len函數(shù):返回字符串的長(zhǎng)度。我們經(jīng)常用它跟Left函數(shù)一起,把一個(gè)字符串去掉末尾一個(gè)字符,在用分隔符循環(huán)連接字符串時(shí),結(jié)尾會(huì)多一個(gè)分隔符:listStr = Left(listStr, Len(listStr) - 1)
10、Replace函數(shù):用另一個(gè)字符串替換字符串中的子字符串Replace(expression, find, replace, [start], [count], [compare])
'// expression: 要處理的字符串
'// find: 要查找的子字符串
'// replace: 用于替換的字符串
'// start(可選): 搜索開始的位置
'// count(可選): 要替換的次數(shù)
'// compare(可選): 比較方式
Dim result As String
result = Replace("Hello World", "World", "VBA") '返回"Hello VBA"
(1)統(tǒng)一全角、半角、中英文中的某種字符,比如把半角的冒號(hào)“:”替換成全角的冒號(hào)“:”11、Space函數(shù):返回指定數(shù)量的空格Space(Number),跟我們用引號(hào)括起來的空格" "一樣,用這個(gè)函數(shù)看起來要好一些,如果需要一個(gè)很長(zhǎng)的空格,我們直接輸入空格就有點(diǎn)不太方便了。12、StrComp函數(shù):比較兩個(gè)字符串,并返回表示比較結(jié)果的整數(shù)StrComp(string1, string2, [compare])
'// string1: 第一個(gè)要比較的字符串
'// string2: 第二個(gè)要比較的字符串
'// compare(可選): 比較方式
'// 返回值:
'// 返回0:兩個(gè)字符串相等
'// 返回-1:string1小于string2
'// 返回1:string1大于string2
13、String函數(shù):返回由指定字符重復(fù)指定次數(shù)的字符串String(number, character)
'// number: 字符重復(fù)的次數(shù)。
'// character: 要重復(fù)的字符。
14、StrReverse函數(shù):將字符串中的字符順序反轉(zhuǎn)15、& 運(yùn)算符:用于將兩個(gè)或多個(gè)字符串連接在一起(字符串拼接),通常我們會(huì)加上一個(gè)分隔符,這樣連成一字符串看上去很清晰,而且還可以利用Split函數(shù)分列到一個(gè)字符串?dāng)?shù)組,還原原來的單個(gè)字符串;如果需要分列,那么這個(gè)分隔符要選擇好,不能與原字符串中的單個(gè)字符相同。16、Split函數(shù):將一個(gè)字符串按照指定的分隔符分割成一個(gè)字符串?dāng)?shù)組,這里要注意被賦值的字符串?dāng)?shù)組的定義方式,要么定義為變體類型、要么定義為字符型數(shù)組,否則會(huì)報(bào)錯(cuò)“類型不匹配”:Dim arrStr
Dim tempStr() As String
arrStr = Split("Hello World", " ")
tempStr = Split("Hello World", " ")
resultArray = Split(expression, [delimiter], [limit], [compare])
'// expression: 要分割的字符串
'// delimiter (可選): 用作分隔符的字符?默認(rèn)是空格
'// limit(可選): 返回?cái)?shù)組的最大元素?cái)?shù)。如果指定,則超出部分不分割。
'// compare(可選): 指定比較方式。可以是 vbBinaryCompare 或 vbTextCompare
17、Format函數(shù):有點(diǎn)類似工作表函數(shù)Text,按照指定的格式表達(dá)式格式化字符串、數(shù)字或日期Format(Expression, [ Format ], [ FirstDayOfWeek ], [ FirstWeekOfYear ])
(1)把當(dāng)前時(shí)間格式化成一個(gè)字符串,可以作為文件名或者流水號(hào),避免重復(fù):x = format(Now, "yyyymmddhhmmss")
(2)把數(shù)字格式化為指定格式,把沒有分隔符的日期格式化為日期格式:a = format(20240102, "0000-00-00")
這個(gè)函數(shù)的參數(shù)格式非常多,想進(jìn)一步了解的,可以參考官方文檔:https://learn.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/format-function-visual-basic-for-applications
18、Asc函數(shù):返回字符串中第一個(gè)字符的ASCII碼值A(chǔ)sc(string)。19、Chr函數(shù):返回與指定的ASCII碼對(duì)應(yīng)的字符,我是經(jīng)常用Chr(10),返回一個(gè)回車符。20、Join函數(shù):使用指定的分隔符,將一個(gè)字符串?dāng)?shù)組連接成一個(gè)字符串。21、Filter函數(shù):返回包含指定子字符串的數(shù)組元素:Filter(sourcearray, match, [include], [compare])
'// sourcearray: 要搜索的字符串?dāng)?shù)組
'// match: 要查找的字符串
'// include(可選): 布爾值,決定是否返回匹配項(xiàng)(True)還是不匹配項(xiàng)(False)
'// compare (可選): 比較方式
這個(gè)函數(shù)沒怎么用過,相當(dāng)于篩選,可以用于模糊搜索,不用循環(huán)匹配了,這個(gè)有機(jī)會(huì)要用用,感覺不錯(cuò)!22、Val函數(shù):從字符串中提取數(shù)值部分,返回一個(gè)數(shù)字,常常用來把非數(shù)字文本轉(zhuǎn)換為0,從而避免輸入錯(cuò)誤造成程序報(bào)錯(cuò)。23、Str函數(shù):把數(shù)值轉(zhuǎn)換成字符串,正數(shù)前會(huì)添加一個(gè)空格。24、CStr函數(shù):將表達(dá)式轉(zhuǎn)換為字符串,注意與Str函數(shù)的區(qū)別。如果一個(gè)函數(shù)的參數(shù)是字符串類型,當(dāng)我們給它一個(gè)沒有確定類型的值時(shí),會(huì)報(bào)錯(cuò),類型不匹配,我們可以定義一個(gè)字符串變量,把要作為參數(shù)的值先賦值給這個(gè)字符串變量,再把這個(gè)字符串變量作為函數(shù)的參數(shù);或者我們?cè)谶@個(gè)參數(shù)值外面加一層CStr函數(shù)。25、StrConv函數(shù):將字符串轉(zhuǎn)換為指定的格式(如小寫、大寫、首字母大寫、Unicode等),這個(gè)函數(shù)沒怎么用過,在工作表中用過Upper、Lower、Proper,分別是大寫、小寫、首字母大寫:StrConv(string, conversion, [LCID])
'// string: 要轉(zhuǎn)換的字符串。
'// conversion: 指定轉(zhuǎn)換類型的數(shù)字(vbUpperCase,vbLowerCase,vbProperCase ,vbUnicode等)。
'// LCID(可選): 指定的區(qū)域設(shè)置ID。