国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[原創(chuàng)]VBA編程系列:運算符和表達式


[摘要]
本文從廣義的角度將VBA的運算符進行了全面的歸納和總結,包括通常意義上的算術運算符、連接運算符、比較運算符和邏輯運算符,還包括了賦值運算符、點運算符以及Like運算符、AddressOf運算符等。同時,概述了表達式的知識。
提示 學習是需要思考和實踐的,只有舉一反三,才能真正理解和掌握。因為VBA的一些運算符涉及到較強的邏輯關系,您在閱讀本文時,可以不斷思考它們之間的邏輯關系。同時,您可以在VBE編輯器的模塊中測試本文中的一些語句和示例,以加深認識。
在使用VBA編程時,您一定會經常使用到VBA運算符,它是VBA程序的重要組成部分。在本文中,我將運算符分為兩大類,一類是通常意義上的運算符,即:算術運算符、連接運算符、比較運算符和邏輯運算符;另一類是與語句相關的運算符,即:賦值運算符和點運算符。此外,還簡略地介紹一下Like運算符和AddressOf運算符。
您通過使用運算符,對VBA各種元素進行連接,或者完成一些運算以形成了VBA表達式或語句。再進一步說,表達式是數(shù)字、字符串、常量、變量、對象成員、以及運算符的組合。
算術運算符和表達式
■ 算術運算符包括+(加法運算符)、- (減法運算符)、/ (除法運算符)、\(整除運算符)、Mod(取模運算符)、^(乘冪運算符),下面逐一進行介紹。
+ 加法運算符。形成數(shù)值表達式,并將數(shù)值或數(shù)值表達式相加。也可用于連接兩個字符串變量,但建議用連接運算符進行連接。例如,結果=表達式1+表達式2。
- 減法運算符。形成數(shù)值表達式,將數(shù)值或數(shù)值表達式相減。也可用在數(shù)值之前,用于表示負數(shù)。例如,結果=表達式1-表達式2。
* 乘法運算符。形成數(shù)值表達式,將數(shù)值或數(shù)值表達式相乘。例如,結果=表達式1*表達式2。
/ 除法運算符。形成數(shù)值表達式,將兩個數(shù)值或數(shù)值表達式相除,其中除數(shù)不能為零,否則會得到一個錯誤。例如,結果=表達式1/表達式2。
\ 整除運算符。將兩個數(shù)值或數(shù)值表達式相除,并返回一個整數(shù),即舍掉余數(shù)或者小數(shù)部分。例如,結果=表達式1\表達式2。例如,7\3的值為2。
Mod 取模運算符。將兩個數(shù)值或數(shù)值表達式相除,并只返回余數(shù)。例如,結果=表達式1 Mod 表達式2。例如,7 Mod 3的值為1。
^ 乘冪運算符。計算數(shù)值或數(shù)值表達式的乘冪。例如,結果=數(shù)值 ^ 指數(shù)。
■ 算術運算符的優(yōu)先順序
算術運算符的優(yōu)先順序依次為:乘冪運算符(^)——乘法和除法運算符(*、/,兩者沒有優(yōu)先順序)——整除運算符(\)——取模運算符(Mod)——加法和減法運算符(+、-,兩者沒有優(yōu)先順序)。若在同一代碼中多次使用同一個算術運算符,則從左到右運算。使用括號可以改變優(yōu)先順序。
連接運算符和表達式
& 連接運算符,用于連接字符串。它能把一些字符串變量連接在一起,形成一個新的字符串。在進行連接運算之前,任何非字符串變量或表達式都轉換為字符串。例如,結果=字符串1&字符串2,其結果的數(shù)據(jù)類型為String類型。
+ 混合連接運算符,它運用很靈活,但會與加法運算符相混,給您的閱讀帶來不便。例如,結果=表達式1+表達式2,其結果的數(shù)據(jù)類型取決于表達式的數(shù)據(jù)類型。
下面對這兩種連接運算符進行測試,測試表達式為:
    結果=表達式1+表達式2
當兩個表達式都是數(shù)值數(shù)據(jù)時,用&運算符會將兩個數(shù)值數(shù)據(jù)連接,如5 & 1連接后為51,但用+運算符后,會將兩數(shù)值相加得到其結果,如5+1進行連接后為6。當兩個表達式都是字符串(Sting)時,將對兩個字符串進行連接為一個字符串。當兩個表達式為空時,+運算符的結果為0,而&運算符的結果為Null值。當一個表達式為數(shù)值類型數(shù)據(jù),另一個表達式為字符串類型數(shù)據(jù)時,+運算符將產生類型不匹配的錯誤,而&運算符則將兩個表達式連接。未聲明變量時,當一個表達式為數(shù)字,另一個表達式為字母時,+運算符和&運算符的結果均為數(shù)字,如j=7,k=student,i=j+k與i=j&k的結果均為7。當兩個表達式都為空時,+運算符結果為0,而&運算符結果為Null值。
提示 您可以在VBE中調試,看看它們在各種情況下的區(qū)別。
比較運算符和表達式
■ 比較運算符包括<(小于)、>(大于)、=(等于)、>=(大于或等于)、<=(小于或等于)、<>(不等于),用于數(shù)據(jù)元素的比較,其一般的語法為:
    結果=表達式1 <比較運算符> 表達式2
結果為True(1)、False(0)或者為Null。其中比較運算符可以單獨使用,也可以兩兩結合使用。如果表達式1或者表達式2本身為Null時才會產生Null的結果。
下面結合上述語法,對這些比較運算產生的結果為True或False時所需要的條件進行說明:
> 表達式1大于并且不等于表達式2時,其結果為True;否則,為False。
< 表達式1小于并且不等于表達式2時,其結果為True;否則,為False。
= 表達式1等于表達式2時,其結果為True;否則,為False。
>= 表達式1大于或者等于表達式2時,其結果為True;否則,為False。
<= 表達式1小于或者等于表達式2時,其結果為True;否則,為False。
<> 表達式1不等于表達式2時,其結果為True;否則,為False。
比較運算符可用于數(shù)值比較或字符串變量比較,也可用于數(shù)值與字符串的比較。如果其中一個表達式是數(shù)值,另一個是字符串,則數(shù)值表達式總是“小于”字符串表達式;如果都是字符串,則最大的字符串就是最長的字符串;如果字符串一樣長,則小寫的大于大寫的。
還有一個比較運算符,即Is運算符,可用于判斷兩個對象變量是否指向同一個對象,其語法為:
    結果=對象1 Is 對象2
如果對象1和對象2都指向同一個對象,其結果為True;否則,結果為False。
還可以用Is運算符來判斷一個對象變量是否符合要求,例如,條件判斷語句If objVar Is Nothing Then 表明,如果對象變量objVar沒有對象引用,則為True,執(zhí)行Then后面的語句。
■ 比較運算符的優(yōu)先順序。如果多個比較運算符出現(xiàn)在同一行代碼中,則按從左到右的順序計算。
邏輯運算符和表達式
■ 邏輯運算符允許對一個或多個表達式進行運算,并返回一個邏輯值。VBA的邏輯運算符包括:And(邏輯與)、Or(邏輯或)、Not(邏輯非)、Eqv(與或)、Imp(蘊含)、Xor(異或)。
And 執(zhí)行邏輯與運算,即如果表達式1和表達式2都是True,則結果返回True;只要其中一個表達式為False,其結果就是False;如果有表達式為Null,則結果為Null。其語法為:
結果=表達式1 And 表達式2
例如,If x>1 And y<10 Then,表示如果x的值大于1且y的值小于10時,就執(zhí)行Then后面的代碼。又如,語句MsgBox ActiveSheet.Name=”Sheet2” And Range(“A1”)=1表示如果當前工作表名為Sheet2并且當前工作表上的單元格A1的值為1時,消息框將顯示True。
Or 執(zhí)行邏輯或運算,即如果表達式1或者表達式2為True,或者表達式1和表達式2都為True,則結果為True;只有兩個表達式都不是True時,其結果才為False;如果有表達式為Null,則結果也是Null。其語法為:
    結果=表達式1 Or 表達式2
例如,If x>1 Or y<10 Then,表示如果x的值大于1,或者y的值小于10,則執(zhí)行Then后面的代碼。又如,語句MsgBox Range(“A1”)=1 Or Range(“B1”)=2表示如果當前工作表中的單元格A1中的值為1或者單元格B1中的值為2時,消息框將顯示True。
Not 對一個表達式進行邏輯非運算,即如果表達式為True,則Not運算符使該表達式變成False;如果表達式為False,則Not運算符使該表達式變成True;如果表達式為Null,則Not運算符的結果仍然是Null。其語法為:
    結果=Not 表達式
例如,If Not IsError(x) Then,如果IsError返回False則執(zhí)行Then后面的代碼,表示x中不包含錯誤。
又如,語句Selection.Font.Bold=Not Selection.Font.Bold,其中Bold屬性的值為True或False,使用Not運算符會將值False改為True,將值True改為False,這樣可用于切換所選單元格是否“加粗”。這也是VBA程序編寫時的一個技巧,我們可以運用Not運算符模仿工具欄“加粗”、“斜體”等按鈕的工作模式,如當我們點擊“加粗”按鈕時,所選單元格中的字體將加粗顯示,再次單擊“加粗”按鈕,單元格中的字體又正常顯示了。
Eqv 執(zhí)行與或運算,即判斷兩個表達式是否相等,當兩個表達式都是True或者都是False時,結果返回True;若一個表達式為True而另一個表達式為False時,結果返回False。其語法為:
    結果=表達式1 Eqv 表達式2
Imp 執(zhí)行邏輯蘊含運算,其語法為:
    結果=表達式1 Imp 表達式2
當兩個表達式都為True和兩個表達式都為False時,其結果為True;當表達式1為True,表達式2為False時,其結果為False;當表達式1為False,表達式2為True時,其結果為True;當表達式1為False,表達式2為Null時,其結果為True;當表達式1為True,表達式2為Null時,其結果為Null;當表達式1為Null,表達式2為True時,其結果為True;當表達式1為Null,表達式2為False時,其結果為Null;當兩個表達式都為Null時,其結果為Null。上面的表述可能有點繞口,概括地說,不管表達式1,當表達式2為真時,其結果為True;當兩個表達式都為False,或者表達式1為False,表達式2為Null時,其結果為True;當表達式1為True,表達式2為False時,結果為False;其它情況則為Null。
Xor 執(zhí)行邏輯異或運算,用于判斷兩個表達式是否不同。若兩個表達式都是True或都是False時,其結果就是False;如果只有一個表達式是True,其結果就是True;如果兩個表達式中有一個是Null,其結果是Null。其語法為:
結果=表達式1 Xor 表達式2
■ 邏輯運算符的優(yōu)先順序
邏輯運算符的優(yōu)先順序依次為:Not——And——Or——Xor——Eqv——Imp。如果在同一行代碼中多次使用相同的邏輯運算符,則從左到右進行運算。
運算符的優(yōu)先順序
如果您不了解運算符的優(yōu)先級別(即哪個運算符優(yōu)先運算,哪個運算符最后才運算),您的表達式可能會出現(xiàn)意想不到的結果。在前面的小節(jié)中,介紹了同一類運算符的優(yōu)先順序。如果在一行代碼中包括多個運算符,則其進行運算的優(yōu)先順序是不相同的。運算符的優(yōu)先級會影響到表達式的最終結果。
當一行代碼中包括幾類運算符時,其優(yōu)先順序為:算術運算符——連接運算符——比較運算符——邏輯運算符。
如果您要改變同類或不同類運算符的優(yōu)先順序,可以使用括號,括號內的表達式總比括號外的優(yōu)先進行運算。
Like運算符
Like運算符用于判斷給定的字符串是否與指定的模式相匹配,其語法為:
結果=字符串 Like 模式
其中,字符串為要與模式相比較的字符串,如果字符串與指定的模式相匹配,則結果為True;否則,其結果為False。如果字符串或者模式Null,則結果為Null。
在模式中可使用一些特殊字符,其它的字符都能與它們相匹配,這些字符有:?代表任意一個字符;*代表0或多個字符;#代表任意一個數(shù)字(0-9);[charlist]代表字符列表中的任意一個字符;[!charlist]代表不在字符列表中的任意一個字符;[]代表空字符串(“”)。
Charlist將模式中的一組字符與字符串中的一個字符進行匹配,可以包含任何一種字符,包括數(shù)字;在Charlist中使用連字號(-)產生一組字符來與字符串中的一個字符相匹配,如[A-D]與字符串相應位置的A、B、C或D匹配;在Charlist中可以產生多組字符,如[A-D H-J];各組字符必須是按照排列順序出現(xiàn)的;在Charlist的開頭或結尾使用連字號(-)或以與連字號自身相匹配,例如[-H-N]與連字號(-)或H到N之間的任何字符相匹配;在Charlist中的一個字符或者一組字符前加上!號,表明與該字符或該組字符之外的所有字符匹配,如[!H-N]與字符H-N范圍之外的所有字符匹配;而在[]外使用!號則只匹配其自身。要使用任何特殊字符作為匹配字符,只需將它放在[]中即可,例如[?]表明要與一個問號進行匹配。下面給出一個例子。
打開一個工作簿,選擇菜單“工具——宏——Visual Basic編輯器”或按Alt+F11組合鍵,打開VBE編輯器。在VBE編輯器中,選擇菜單“插入——用戶窗體”,新建一個用戶窗體,點擊控件工具箱中的“文本框”控件和“按鈕”控件,在用戶窗體上放置一個“文本框”和一個“按鈕”,并在用戶窗體中對它們的大小和位置進行合理調整,雙擊剛創(chuàng)建的“按鈕”控件,并輸入下面的代碼:
Private Sub CommandButton1_Click()
  Dim sEnd As String, sPattern As String
  sEnd = "in Office"
  sPattern = "[F W]*" & sEnd
  If TextBox1.Text Like sPattern Then
    MsgBox "輸入正確"
  Else
    MsgBox "輸入錯誤"
  End If
End Sub
本代碼中[F W]*表示字符以F或W開頭的字符串,使用&連接符將其與變量sEnd所代表的字符串“in Office”相連接。如果您在文本框中輸入以字符F或字符W開頭并以“in Office”結尾的句子,將顯示“輸入正確”消息框,否則將顯示“輸入錯誤”的消息框。在VBE編輯器中點擊運行按鈕或按F5鍵,運行該代碼試試。當您在文本框中輸入“Fanjy in Office”后,單擊按鈕,將顯示“輸入正確”消息框。
AddressOf運算符
AddressOf運算符將過程的地址傳遞給API函數(shù)。其語法為
    AddressOf 過程名
其中,過程名為需要傳遞給API函數(shù)地址的過程名稱。AddressOf運算符后面必須是用戶定義的函數(shù)名、過程名或屬性名,且該過程或函數(shù)必須保存在代碼模塊中。
賦值運算符
在VBA中使用等號(=)作為賦值運算符,它將其右側的數(shù)據(jù)或者表達式的結果賦給左側的變量,使其在程序代碼中運用。例如,x=666,Range(“A1”).value="/”Dog”。
點運算符
在VBA中,使用點運算符來引用某個對象。運用點運算符,可以限定所引用的對象的位置,清楚地表明該對象的層次結構,還可以指定某對象的方法或屬性。例如,語句Workbooks(“Book1.xls”).Worksheets(“Sheet1”).Range(“A1”)表明對工作簿Book1中的工作表Sheet1上的單元格A1的引用;又如,語句Msgbox" Worksheets(“Sheet1”).Range(“A1”).Value表明顯示當前工作簿中工作表Sheet1上單元格A1的值。


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
葡萄城報表系統(tǒng)開發(fā)中常用的運算符匯總
VB基礎知識整理
愛創(chuàng)課堂 js基礎 Math對象 比較運算符
Python字符串運算符
邏輯“非”運算符 (!)
php 學習筆記
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服