Board logo

標題: 請教判斷中文字的語法 ? [打印本頁]

作者: t8899    時間: 2015-4-30 15:17     標題: 請教判斷中文字的語法 ?

假如[a1]的第2個字為中文字則[a2]=1 的語法 ?

if mid([a1],2,1) like ???? then  [a2]=1
作者: Hsieh    時間: 2015-4-30 15:51

回復 1# t8899
  1. Sub ex()
  2. mystr = Mid([A1], 2, 1)
  3. If mystr <> "" And Application.WorksheetFunction.Dbcs(mystr) = Application.WorksheetFunction.Asc(mystr) Then [A2] = 1 Else [A2] = 0
  4. End Sub
複製代碼

作者: luhpro    時間: 2015-4-30 22:12

本帖最後由 luhpro 於 2015-4-30 22:13 編輯
假如[a1]的第2個字為中文字則[a2]=1 的語法 ?

if mid([a1],2,1) like ???? then  [a2]=1
t8899 發表於 2015-4-30 15:17

這樣也可以 :
  1. Sub nn()
  2.   Dim sStr$, lPos&
  3.   
  4.   sStr = Mid([A1], 2, 1)
  5.   If sStr <> "" Then
  6.     lPos = Asc(sStr)
  7.     If lPos <= 0 Then [A2] = 1 Else [A2] = 0
  8.   End If
  9. End Sub
複製代碼

作者: t8899    時間: 2015-5-1 08:59

這樣也可以 :
luhpro 發表於 2015-4-30 22:12

謝謝
我找到一個最簡單的,供參考
If Asc(mid([a1],2,1)) < 0 Then [a2]=1
作者: bobomi    時間: 2015-5-1 09:57

謝謝
我找到一個最簡單的,供參考
If Asc(mid([a1],2,1)) < 0 Then [a2]=1
t8899 發表於 2015-5-1 08:59



你可以 Run 下面看看

Sub xx()

[a1] = "1布2"
If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = 1
[a1] = "123"
If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = 1

End Sub
作者: t8899    時間: 2015-5-1 10:08

你可以 Run 下面看看

Sub xx()

[a1] = "1布2"
If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = 1
[ ...
bobomi 發表於 2015-5-1 09:57

我把您的值 "1布2"  "123"放入 a1 測試沒問題
Sub MA3333_Click()
Dim k As Integer
For k = 1 To Len([A1])
If Asc(Mid([a1], k, 1)) < 0 Then
MsgBox Mid([a1], k, 1)
End If
Next
End Sub
另外再補判斷其他 英文,數字........的方法
判斷0-9 ===>    If Mid([a1], 2, 1) Like "[0-9]" Then
[^A-Za-z]非英文字  [^0-9] 非數字   [^0-9A-Za-z] 除了英文和數字之外的字元  
^表示不是
作者: bobomi    時間: 2015-5-1 10:19

你一定要執行我這個
我把 Sub Name 改成 MA3333_Click() 了
請你再用滑鼠點點看

Sub MA3333_Click()

[a1] = "1布2"
If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = "1  第2字=中文"
[a1] = "123"
If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = "1  第2字=中文"

End Sub
作者: t8899    時間: 2015-5-1 10:41

你一定要執行我這個
我把 Sub Name 改成 MA3333_Click() 了
請你再用滑鼠點點看

Sub MA3333_Click()
...
bobomi 發表於 2015-5-1 10:19

沒問題啊! [attach]20841[/attach]
作者: bobomi    時間: 2015-5-1 10:53

回復 8# t8899

你的用意是條件不成立時, 不要讓 [A2] 由 1 變回 0, 是這樣的話, 那就是我誤會你的原意囉

不然正常是應該這樣寫

If Asc(Mid([a1], 2, 1)) < 0 Then [a2] = 1 else  [a2] = 0
作者: luhpro    時間: 2015-5-3 07:46

謝謝
我找到一個最簡單的,供參考
If Asc(mid([a1],2,1)) < 0 Then [a2]=1
t8899 發表於 2015-5-1 08:59

我之所以會用
If sStr <> "" Then
這一行的原因是 :
如果 [A1] 儲存格的內容只有 1 個英數字 或是 沒有資料,
那麼 Asc(mid([a1],2,1)) 會出現錯誤訊息.

當然, 原式若要簡化是可以把 lPos 拿掉:
  1. Sub nn()
  2.   Dim sStr$
  3.   
  4.   sStr = Mid([A1], 2, 1)
  5.   If sStr <> "" Then
  6.     If Asc(sStr) <= 0 Then [A2] = 1 Else [A2] = 0
  7.   End If
  8. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)