返回列表 上一主題 發帖

[發問] 請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?

本帖最後由 kimbal 於 2013-3-1 01:07 編輯
請問VBA 的程式有沒有可以辨認某個儲存格內的字元有無包含某幾個字串?
例如
另外無論是大寫或小寫都辨認 ...
198188 發表於 2013-3-1 00:48


用EXCEL的SEARCH公式即可
    =IF(ISERROR(SEARCH("IN",UPPER(A1))),"",SEARCH("IN",UPPER(A1)))


VBA 的話
  1. Public Function csearch(find_text, rng_within)
  2.     Dim result
  3.     result = InStr(1, UCase(rng_within.Value), UCase(find_text))
  4.     csearch = IIf(result = 0, "", result)
  5. End Function
複製代碼
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復  kimbal


    感謝,但用一般excel我知道,我想知道vba有無這個功能?
198188 發表於 2013-3-1 01:00



    請看上面編輯
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

回復 6# 198188


    回復 4# kimbal


>    csearch = IIf(result = 0, "", result)
> 請問如果只是檢查有沒有是否改成csearch = IIf(result = 0, "沒有", “有”)

對啊,就是這樣.


>另外請問
>DO
>UNTIL
>可否同時有兩個UNTIL的條件
>例如:
>DO
>UNTIL i>=1 or l = 0
>UNTIL i>=1 and l = 0

可以的,這樣就可
    Do
        ...
    Loop Until i> = 5 and l = 0
///
    Do
        ...
    Loop Until i> = 5 Or l = 0



>如果在VBA內注明 SEARCH "IN"可以嗎?另外英文大寫和小寫都可以辨認到嗎?或者如何指定辨認大寫或小寫?

現在是不論大寫小寫都可以辨認到的,
因為用了ucase把兩個輸入都先轉成大寫,然後才做比較
result = InStr(1, UCase(rng_within.Value), UCase(find_text))
例如:
result  = Instr(1, ucase("abc"), ucase("B"))
計算時會變為
result  = Instr(1, "ABC", "B")
result = 2


拿走ucase就的話就要大小寫全對才可以找到位置
result = InStr(1, rng_within.Value, find_text)
例如:
result  = Instr(1, "abc", "B")
result = 0

把"B"改成"b"就可以得出2
result  = Instr(1, "abc", "b")
result = 2
懂得發問,答案就會在其中

今日の一秒は  明日にない
http://kimbalko-chi.blogspot.com
http://kimbalko.blogspot.com

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題