在前幾天分享的文章【快速對比資料】中,使用了如下**,有小朋友問為什麼要再第20行**中使用trim
函式呢?是否可以在構建字串時直接處理呢?本文將就講一下vba中快速連線字串的幾種方法。
我們使用乙個簡單的示例,提取1-10中的偶數並輸出結果,判斷偶數非常簡單,程式主框架如下。
假設以空格分隔結果。sub demo(
)dim i as
integer
, msg as
string
for i =1to
10if
int(i /2)
=(i /2)
then
'構建字串msg
next
debug.print "偶數:" & msg
endsub
【**解析】sub demo1(
)dim i as
integer
, msg as
string
for i =1to
10if
int(i /2)
=(i /2)
then
iflen
(msg)=0
then
msg =
cstr
(i)else
msg = msg &
" "&
cstr
(i)end
ifend
ifnext
debug.print "偶數:" & msg
endsub
第5行**判斷msg
變數是否為空,如果為空則說明是第乙個偶數,那麼第6行**直接賦值,否則第8行**在msg
變數之後追加空格和偶數。
【**解析】sub demo2(
)dim i as
integer
, msg as
string
for i =1to
10if
int(i /2)
=(i /2)
then msg = msg &
" "&
cstr
(i)next
debug.print "偶數:" & trim(msg)
endsub
第4行**構建輸出結果時,不再對第乙個偶數做特殊處理,這樣產生的字串為" 2 4 6 8 10"
,第乙個數字之前會有乙個多餘的前導空格,幸運的是vba中提供了相應函式去除空格,第6行**中使用trim
函式將可以實現完美輸出了,效果和方法1完全相同。
【**解析】sub demo3(
)dim i as
integer
, msg as
string
for i =1to
10if
int(i /2)
=(i /2)
then msg = msg &
","&
cstr
(i)next
debug.print "偶數:" &
mid(msg,2)
endsub
與方法2相比,區別僅僅在於第6行**,使用mid
函式去除第乙個字元(多餘的逗號),同樣簡潔。
【**解析】sub demo4(
)dim i as
integer
, msg as
string
const str_deli = "||"
for i =1to
10if
int(i /2)
=(i /2)
then msg = msg & str_deli &
cstr
(i)next
debug.print "偶數:" &
mid(msg,
len(str_deli)+1
)end
sub
第3行**定義分隔符常量,用於模擬任意長度的分隔符(單個或多個字元)。
第7行**輸出時mid
函式的第二個引數使用len
函式獲取分隔符的長度,從其之後一位開始擷取字串,就可以得到正確的結果。
同乙個問題,解決方法有多種,條條大路通羅馬。
vba字串函式
trim string 去掉string左右兩端空白 ltrim string 去掉string左端空白 rtrim string 去掉string右端空白 len string 計算string長度 left string,x 取string左段x個字元組成的字串 right string,x 取...
VBA字串(十二)
字串是乙個字串行,可以由字母,數字,特殊字元或全部字元組成。如果乙個變數被包含在雙引號 中,則被認為是乙個字串。語法 variable name this is a string vb 簡單示例 str1 string only alphabets str2 132.45 only numbers ...
合併字串
給定兩個字串s1和s2,合併成乙個新的字串s。合併規則為,s1的第乙個字元為s的第乙個字元,將s2的最後乙個字元作為s的第二個字元 將s1的第二個字元作為s的第三個字元,將s2的倒數第二個字元作為s的第四個字元,以此類推。包含多組測試資料,每組測試資料報含兩行,代表長度相等的兩個字串s1和s2 僅由...