VBA知識 Like運算子詳解

2021-09-26 22:19:52 字數 3985 閱讀 9838

like運算子用於判斷給定的字串是否與指定的模式相匹配,其語法為:

結果=《字串》 like 《模式》

其中:1.《字串》為文字字串或者對包含文字字串的單元格的引用,是要與《模式》相比較的字串,資料型別為string型。

2.《模式》資料型別為string型,可以使用一些特殊字元,其它的字元都能與它們相匹配,如下圖1所示。

圖13.《結果》為boolean型。如果字串與指定的模式相匹配,則《結果》為true;否則《結果》為false。如果字串或者模式null,則結果為null。

4.like運算子預設的比較模式區分大小寫。可以用optioncompare語句來改變比較模式,如改變為文字比較模式,則不區分大小寫。

5.[字元列表]將模式中的一組字元與《字串》中的乙個字元進行匹配,可以包含任何一種字元,包括數字。

6.在[字元列表]中使用連字型大小(-)產生一組字元來與《字串》中的乙個字元相匹配,如[a-d]與《字串》相應位置的a、b、c或d匹配.

7.在[字元列表]中可以產生多組字元,如[a-dh-j];各組字元必須按照排列順序出現。

8.在[字元列表]的開頭或結尾使用連字型大小(-)與連字型大小自身相匹配,例如[-h-n]與連字型大小(-)或h到n之間的任何字元相匹配。

9.在[字元列表]中的乙個字元或者一組字元前加上!號,表明與該字元或該組字元之外的所有字元匹配,如[!h-n]與字元h-n範圍之外的所有字元匹配;而在外使用!號則只匹配!自身。

10.要使用任何特殊字元作為匹配字元,只需將它放在中即可,例如[?]表明要與乙個問號進行匹配。

11.為了與左括號 ([)、問號 (?)、數字符號 (#)和星號(*) 等特殊字元進行匹配,可以將它們用方括號括起來。不能在乙個組內使用右括號 (]) 與自身匹配,但在組外可以作為個別字元使用。

示例1:基本用法

下面的**演示了like運算子的基本使用:

sub testlikepattern()

dim blike1 as boolean

dim blike2 as boolean

dim blike3 as boolean

dim blike4 as boolean

dim blike5 as boolean

dim blike6 as boolean

dim blike7 as boolean

"返回 true

blike1 = "abbba"like "a*a"

"返回 true

blike2 = "f" like"[a-z]"

"返回 false

blike3 = "f" like"[!a-z]"

"返回 true

blike4 = "a2a"like "a#a"

"返回 true

blike5 = "am5b"like "a[l-p]#[!c-e]"

"返回 true

blike6 = "bat123khg" like "b?t*"

"返回 false

blike7 = "cat123khg" like "b?t*"

end sub

示例2:自定義字元比較函式

下面是乙個簡單的自定義函式islike:

"摘自excel高階vba程式設計寶典

function islike(text as string, _

pattern as string) _

as boolean

islike = text like pattern

end function

如果文字字串text與指定的模式pattern匹配,該函式則返回true。該函式接受兩個引數:

text:字串或者是對包含字串的單元格的引用。

pattern:包含有如上表1所示特殊字元的字串。

在工作表公式中可以方便地使用islike函式:

1.下面的公式返回true。因為*匹配任意數量的字元,所以如果第乙個引數是以「g」開始的任意文字,則返回true:

=islike(「guitar」,」g*」)

2.下面的公式返回true。因為?匹配任意的單個字元,所以如果第乙個引數是以「unit12」,則返回false:

=islike(「unit1」,」unit?」)

3.下面的公式返回true,因為第乙個引數是第二個引數的某個單個字元:

=islike(「a」,」[aeiou]」)

4.如果單元格a1包含a,e,i,o,u,a,e,i,o或者u,那麼下面的公式返回true。使用upper函式作為引數,可以使公式不區分大小寫:

=islike(upper(a1),upper(「[aeiou]」))

5.如果單元格a1包含以「1」開始並擁有3個數字的值(也就是100到199之間的任意整數),那麼下面的公式返回true:

=islike(a1,」1##」)

示例3:分類統計所菜單元格區域中的文字字數

下面的**可用於統計所菜單元格區域中的總字數、漢字數、字母數及數字數:

sub subtotalselectioncharnum()

dim str as string

dim chinesechar as long

dim alphabetic as long

dim number as long

dim i as long

dim rng as range

dim j as long

"遍歷所菜單元格

for each rng in selection

"字數累加

j = j + len(rng.value)

for i = 1 to len(rng)

"逐個取字元

str = mid(rng.value, i,1)

if str like "[一-龥]" = true then

"漢字累加

chinesechar =chinesechar + 1

elseif str like "[a-za-z]" = true then

"字母累加

alphabetic =alphabetic + 1

elseif str like "[0-9]" = true then

"數字累加

number = number + 1

end if

next

next

msgbox "所菜單元格區域中共有字數"& j & "個,其中:" _

& vbcrlf & "漢字:" & chinesechar & "個" & _

vbcrlf & "字母:" &alphabetic & "個" & _

vbcrlf & "數字:" &number & "個", _

vbinformation, "文字分類統計"

end sub

在示例工作表中執行**的結果如下圖2所示。

圖2示例4:判斷使用者窗體文字框中的輸入是否符合要求

如下圖3所示的使用者窗體,其中放置了乙個文字框和乙個按鈕。

圖3「確定「按鈕控制項的**如下:

private sub commandbutton1_click()

dim send as string, spattern as string

send = "in excelperfect"

spattern = "[f w]*" & send

if textbox1.text like spattern then

msgbox "輸入正確"

else

msgbox "輸入錯誤"

end if

end sub

此時,當使用者在文字框中輸入文字,單擊「確定「按鈕後,如果輸入的是以字元f或字元w開頭並以「in excelperfect」結尾的句子,將顯示「輸入正確」訊息框,否則將顯示「輸入錯誤」的訊息框。

巧用Like運算子

like 用來比較兩個字串。like運算子的語法具有以下幾個部分 部分描述 result 必需的 任何數值變數。string 必需的 任何字串表示式。pattern 必需的 任何字串表示式,遵循 說明 中的模式匹配約定。如果 string 與 pattern 匹配,則 result 為true 如果...

sizeof運算子詳解

1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣求 sizeof mystruct sizeof double sizeof char sizeof in...

sizeof運算子詳解

參考c primer sizeof運算子返回一條表示式或乙個型別名字所佔的位元組數。滿足右結合律,返回型別size t的常量表示式 兩種形式 1.sizeof type 2.sizeof expr 返回表示式結果型別大小 sizeof並不實際計算其運算物件的值 class sales data sa...