移除多餘的空白字元
如果在字串中除了主要的文字資料之外,前方還包含了多餘的空白字元,這時候就可以使用 Trim
系列的函數將多餘的空白移除。
移除開頭空白字元
LTrim
函數可將字串左邊的空白移除:
Dim mystr As String mystr = " Hello, world." MsgBox "After LTrim : " & LTrim(mystr)
LTrim
會自動判斷字串開頭的空白字元長度,將左邊開頭所有的空白都刪除,執行結果為:
移除結尾空白字元
如果空白位於字串結尾處,則可使用 RTrim
,其用法與 LTrim
類似:
Dim mystr As String mystr = "Hello, world. " MsgBox "After RTrim : " & RTrim(mystr)
結尾的空白移除之後,執行結果與上面相同。
移除開頭與結尾空白字元
如果要同時將前後兩端的所有空白字元都刪除,可以使用 Trim
函數:
Dim mystr As String mystr = " Hello, world. " MsgBox "After Trim : " & Trim(mystr)
開頭與結尾的空白移除之後,執行結果與上面相同。
產生空白字元
如果需要特定長度的空白字串時,可以用 Space
來產生,例如:
MsgBox ("Hello," & Space(10) & "world.")
字串取代
Replace
函數可以將字串中的指定的文字替換成其他的文字,這個函數的完整參數用法如下:
Replace(字串, 搜尋文字, 替換文字[, 起始位置[, 替換次數[, 比對方式]]])
最簡單的用法就是單純將字串中指定的文字替換掉:
Dim mystr As String mystr = "This is a message." newstr = Replace(mystr, "message", "dog") MsgBox "After Replace : " & newstr
這裡是將 mystr
中的 message
替換為 dog
,結果如下:
如果指定要替換的文字在整個字串中有出現好多次,Replace
預設會全部替換掉:
Dim mystr As String mystr = "This is a message." newstr = Replace(mystr, "is", "**") MsgBox "After Replace : " & newstr
這裡就會將字串中的兩個 is
都替換為 **
,結果如下:
如果只想要替換特定位置的文字,或是限制替換次數,可以搭配起始位置
與替換次數
兩個參數的方式來處理:
Dim mystr As String mystr = "This is a message." newstr = Replace(mystr, "is", "**", 1, 1) MsgBox "After Replace : " & newstr
這樣 Replace
就會從字串的開頭開始搜尋,只替換第一個比對成功的文字。
如果要替換比較後面的文字,可以調整起始位置
參數,不過 Replace
會自動將起始位置之前的文字截斷:
Dim mystr As String mystr = "This is a message." newstr = Replace(mystr, "is", "**", 5, 1) MsgBox "After Replace : " & newstr
執行結果如下:
在預設的狀況下 Replace
會將英文字母的大小寫視為不同的字串:
Dim mystr As String mystr = "This Is a Message." newstr = Replace(mystr, "is", "**") MsgBox "After Replace : " & newstr
如果要讓 Replace
在比對時,不要區分英文字母的大小寫(大小寫視為相同),可以將比對方式
參數指定為 vbTextCompare
:
Dim mystr As String mystr = "This Is a Message." newstr = Replace(mystr, "is", "**", 1, -1, vbTextCompare) MsgBox "After Replace : " & newstr
由於比對方式
的參數是最後一個,所以在使用時要把前面的起始位置
與替換次數
兩個參數也都寫進去,這裡的替換次數
設定為 -1
是代表不限制的意思,而比對方式
預設值是 vbBinaryCompare
(大小寫視為不同),這裡改為 vbTextCompare
之後,就可以同時比對字串中大寫與小寫的文字。
字串比較
StrComp
可以比較不同字串之間的大小差異,在排序資料時常常會用到,其參數用法如下:
StrComp(字串一, 字串二[, 比對方式])
前兩個參數就是兩個要比較的字串,而第三個比對方式
參數可用來指定是否區分大小寫,預設值是 vbBinaryCompare
(大小寫視為不同),若設定為 vbTextCompare
則會將大小寫視為相同。
而 StrComp
在比較兩個字串之後,會傳回不同的數值來代表不同的結果:
狀況 | StrComp 傳回數值 |
---|---|
字串一 < 字串二 |
-1 |
字串一 = 字串二 |
0 |
字串一 > 字串二 |
1 |
以下是一些比較的範例:
MsgBox StrComp("Hello", "Hello") ' 結果為 0 MsgBox StrComp("Hello", "HELLO") ' 結果為 1 MsgBox StrComp("Hello", "hello") ' 結果為 -1 MsgBox StrComp("Hello", "hello", vbTextCompare) ' 結果為 0
字串反轉
StrReverse
可將字串反轉:
MsgBox StrReverse("Hello, world.")
大小寫轉換
UCase
與 LCase
可以將字串中的英文字母轉換為大寫或小寫:
MsgBox UCase("Hello, world.") ' HELLO, WORLD. MsgBox LCase("Hello, world.") ' hello, world.
Chen
這邊的文章很受用!
期待版主大大接下來VBA的文章!
play
字串取代中說明Replac在不區分英文字母大小寫時要使用 vbTextCompare的說明中, 句子 “這裡的替換次數設定為 1 是代表不限制的意思” 中的1應是-1吧?
G. T. Wang
已修正,謝謝您。
sean1776
大大的語法顏色真是漂亮
不曉得能否學習如何設定?
線上小白
怎樣 Left 使用變數???
For i = 2 To 100
If Left(U & i ,1) = “找” Then
‘動作
End If
Next
我失敗了……
請問我該怎修改???
VBA初學者
請問 cnt = cnt + 1 ‘ 計算建物總數
為甚麼要cnt=0 cnt=cnt+1,cnt 代表甚麼含意
s = s + Val(price) ‘ 計算建物單價總和
為甚麼要 s=0 s = s + Val(price),其用意是甚麼?
有點不明白,求解~~ 感謝
william
請問如何改variant/double to variant/string ?
謝謝