返回列表 上一主題 發帖

[發問] 如何判斷是否 全形字?

[發問] 如何判斷是否 全形字?

本帖最後由 sunnyso 於 2013-4-8 20:17 編輯

如何判斷是否 全形字? 有沒有用 VBA 和不用VBA的方法.  謝謝

用=CODE() 對"氹" 字 沒有用

  1. 字        is全形
  2. 氹        TRUE
  3. 仔        TRUE
  4. 澳        TRUE
  5. A        FALSE
  6. 1        FALSE
  7. 1        TRUE
  8. ?        FALSE
  9. ?        TRUE
  10. .        FALSE
  11. 。        TRUE
複製代碼
q.rar (6.22 KB)
ss

謝謝,  code() 會小於0 嗎?若會什麼情況?
ss

TOP

我本來也是用 >255 來判斷, doublebyte字

未知是否 Excel 的 bug
ss

TOP

回復 9# ML089
冧
嘅
嗰
啲
ss

TOP

回復 11# ML089

廣東話(粵語)口語字
ss

TOP

回復 13# ML089

感謝大大, 這是最簡潔 的判斷。
ss

TOP

又長知識了
謝謝
ss

TOP

回復 2# Hsieh
回復 13# ML089
回復 19# 准提部林
回復 21# Bodhidharma

Left(   ,1) <> LeftB(   , 1) 在VBA好像不能用

附註 LeftB 函數是使用在位元組資料字串上。所以 LeftB 傳回的是位元組數,而非字元數。

請問各位大大, 如何用VBA來判斷(不使用Application.WorksheetFunction)?
ss

TOP

回復 24# 准提部林

若不考慮〔特殊字〕

DblChrCount = LenB(StrConv([D3], vbFromUnicode)) - Len([D3])
ss

TOP

回復 2# Hsieh 回復 21# Bodhidharma 回復 22# ML089 回復 24# 准提部林

終於想到一個簡潔的方法,用 “正規表示式”

不知 各位大大們是否再提供更的精闢解法!
  1. Function CountDblChr(ByVal sCh As String) As Integer
  2.     Set re = CreateObject("vbscript.regexp")
  3.     're.Pattern = "[\u4e00-\u9fa5]" '判斷中文字(包括特殊字,但不包括符號。和數字如1)
  4.     re.Pattern = "[^\x00-\xff]" '判斷所有的全形字
  5.     re.Global = True
  6.     re.IgnoreCase = True
  7.     Set matches = re.Execute(sCh)
  8.     CountDblChr = matches.Count
  9.     Set re = Nothing
  10. End Function
複製代碼
ss

TOP

        靜思自在 : 吃苦了苦、苦盡廿來,享福了福、福盡悲來。
返回列表 上一主題