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-

Advertisements

你可能會喜歡