- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 119
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-5-17
               
|
[轉貼] Len / LenB - 字串長度判斷方式的探討
一般認知上,LenB是傳回位元組的長度,
如此對於雙位元文字如中文、全形字等,
我們可取得字元(Byte)數而不是字數。例如:
mystr = "測試"
Len(mystr) --> 2
LenB(mystr) --> 4
VBA函數 LenB 與工作表函數 LENB 的差異
上述例子改使用工作表的 LENB 亦可得到相同的結果。
再看以下例子:
工作表 LEN("ABC") --> 3
工作表 LENB("ABC") --> 3
VBA Len("ABC") --> 3
VBA LenB("ABC") --> 6
你可能覺得奇怪,"ABC"不是半形字嗎,
為何VBA LenB 卻傳回 6 呢?
為何VBA LenB 和工作表 LENB 傳回不同結果?
先看以下再說:
LenB(StrConv("ABC",vbFromUnicode)) --> 3
透過 StrConv 轉換,LenB 即傳回我們預期的結果。
VBA輔助說明沒有明確的解釋 LenB 的處理原則,
但由此可推測 VBA LenB 是將字串以 Unicode 編碼方式處理,
而一個Unicode字元是佔兩個位元組。
註1:請參閱VBA的 StrConv 函數說明。
註2:測試環境如左,其他版本若有不同,請提出供大家參考~ |
|