VBA|字元串操作
字元串處理是程序設計中最常見的操作。在VBA中,既可以調用VBA函數,也可以調用Excel工作表函數來處理字元串。
1 大小寫轉換
Sub 大小寫字母轉換()
Dim str1, strLower, strUpper
str1 = "Hello Excel 2013 VBA" ' 要輸送的字元串
strLower = LCase(str1) ' 返回" hello excel 2013 vba"
strUpper = UCase(str1) ' 返回" HELLO EXCEL 2013 VBA"
Debug.Print strLower
Debug.Print strUpper
End Sub
Sub 字元轉換()
Advertisements
Dim str1, strLower, strUpper, strProper
str1 = "Hello Excel 2013 VBA" ' 要輸送的字元串
strLower = StrConv(str1, vbLowerCase) ' 返回" hello excel 2013 vba"
strUpper = StrConv(str1, vbUpperCase) ' 返回" HELLO EXCEL 2013 VBA "
strProper = StrConv(str1, vbProperCase) ' 返回" Hello excel 2013 vba "
Debug.Print strLower
Debug.Print strUpper
Advertisements
Debug.Print strProper
End Sub
2 字元編碼
Sub 查詢字元編碼()
Debug.Print "字元A的編碼:" & Asc("A") ' 返回 65
Debug.Print "字元a的編碼:" & Asc("a") ' 返回 97
Debug.Print "字元串Excel的編碼:" & Asc("Excel") ' 返回 69
End Sub
Sub 生成字元()
Debug.Print "編碼65對應的字母:" & Chr(65) ' 返回 A
Debug.Print "編碼97對應的字母:" & Chr(97) ' 返回 a
Debug.Print "編碼69對應的字母:" & Chr(69) ' 返回 E
Debug.Print "編碼37對應的字母:" & Chr(37) ' 返回 %
End Sub
3 字元串比較
Sub 使用like比較字元串()
Debug.Print """aBBBa"" Like ""a*a""的結果為:"; "aBBBa" Like "a*a" ' 返回 True"
Debug.Print """F"" Like ""[A-Z]""的結果為:"; "F" Like "[A-Z]" ' 返回 True
Debug.Print """F"" Like ""[!A-Z]""的結果為:"; "F" Like "[!A-Z]" ' 返回 False
Debug.Print """a2a"" Like ""a#a""的結果為:"; "a2a" Like "a#a" ' 返回 True
Debug.Print """aM5b"" Like ""a[L-P]#[!c-e]""的結果為:"; "aM5b" Like "a[L-P]#[!c-e]" ' 返回 True
Debug.Print """BAT123khg"" Like ""B?T*""的結果為:"; "BAT123khg" Like "B?T*" ' 返回 True
Debug.Print """CAT123khg"" Like ""B?T*""的結果為:"; "CAT123khg" Like "B?T*" ' 返回 False
End Sub
運行結果:
"aBBBa" Like "a*a"的結果為:True
"F" Like "[A-Z]"的結果為:True
"F" Like "[!A-Z]"的結果為:False
"a2a" Like "a#a"的結果為:True
"aM5b" Like "a[L-P]#[!c-e]"的結果為:True
"BAT123khg" Like "B?T*"的結果為:True
"CAT123khg" Like "B?T*"的結果為:False
Sub 使用StrComp比較字元串()
Dim str1, str2, MyComp
str1 = "ABCD"
str2 = "abcd"
Debug.Print StrComp(str1, str2, 1) ' 返回 0
Debug.Print StrComp(str1, str2, 0) ' 返回 -1
Debug.Print StrComp(str2, str1) ' 返回 1
End Sub
4 截取子串
Sub 取左側子串()
Dim str1 As String
str1 = "Hello Excel 2013 VBA" ' 定義字元串
Debug.Print Left(str1, 1) ' 返回"A"
Debug.Print Left(str1, 7) ' 返回"Hello E"
Debug.Print Left(str1, 30) ' 返回"Hello Excel 2013 VBA"
End Sub
Sub 取右側子串()
Dim str1 As String
str1 = "Hello Excel 2013 VBA" ' 定義字元串
Debug.Print Right(str1, 1) ' 返回"A"
Debug.Print Right(str1, 7) ' 返回"010 VBA "
Debug.Print Right(str1, 30) ' 返回"Hello Excel 2010 VBA"
End Sub
Sub 獲取部分子串()
Dim str1 As String
str1 = "Hello Excel 2013 VBA" ' 定義字元串
Debug.Print Mid(str1, 1, 5) ' 返回"Hello"
Debug.Print Mid(str1, 7, 5) ' 返回"Excel"
Debug.Print Mid(str1, 7) ' 返回"Excel 2013 VBA"
End Sub
Sub 刪除字元串兩側空格()
Dim str1 As String, str2 As String
str2 = "end" '用來定位屬部空格的位置
str1 = " Hello Excel 2013 VBA " ' 定義字元串(首尾各有兩個空格)
Debug.Print "123456789012345678901234567890" '顯示坐標
Debug.Print Trim(str1); str2
Debug.Print LTrim(str1); str2
Debug.Print RTrim(str1); str2
End Sub
Sub 搜索子串位置()
Dim str1 As String
str1 = "Hello Excel 2013 VBA"
Debug.Print InStr(str1, "e")
Debug.Print InStr(3, str1, "e")
Debug.Print InStr(3, str1, "e", vbTextCompare)
End Sub
-End-