已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
VBA編程系列之VBA的運算符和表達式整理了近兩天,貼出來供分享!VBA的運算符和表達式摘要 本文從廣義的角度將VBA的運算符進行了全面的歸納和總結(jié),包括通常意義上的算術(shù)運算符、連接運算符、比較運算符和邏輯運算符,還包括了賦值運算符、點運算符以及Like運算符、AddressOf運算符等。同時,概述了表達式的知識。提示 學(xué)習是需要思考和實踐的,只有舉一反三,才能真正理解和掌握。因為VBA的一些運算符涉及到較強的邏輯關(guān)系,您在閱讀本文時,可以不斷思考它們之間的邏輯關(guān)系。同時,您可以在VBE編輯器的模塊中測試本文中的一些語句和示例,以加深認識。在使用VBA編程時,您一定會經(jīng)常使用到VBA運算符,它是VBA程序的重要組成部分。在本文中,我將運算符分為兩大類,一類是通常意義上的運算符,即:算術(shù)運算符、連接運算符、比較運算符和邏輯運算符;另一類是與語句相關(guān)的運算符,即:賦值運算符和點運算符。此外,還簡略地介紹一下Like運算符和AddressOf運算符。您通過使用運算符,對VBA各種元素進行連接,或者完成一些運算以形成了VBA表達式或語句。再進一步說,表達式是數(shù)字、字符串、常量、變量、對象成員、以及運算符的組合。算術(shù)運算符和表達式 算術(shù)運算符包括+(加法運算符)、- (減法運算符)、/ (除法運算符)、(整除運算符)、Mod(取模運算符)、(乘冪運算符),下面逐一進行介紹。+ 加法運算符。形成數(shù)值表達式,并將數(shù)值或數(shù)值表達式相加。也可用于連接兩個字符串變量,但建議用連接運算符進行連接。例如,結(jié)果=表達式1+表達式2。- 減法運算符。形成數(shù)值表達式,將數(shù)值或數(shù)值表達式相減。也可用在數(shù)值之前,用于表示負數(shù)。例如,結(jié)果=表達式1-表達式2。* 乘法運算符。形成數(shù)值表達式,將數(shù)值或數(shù)值表達式相乘。例如,結(jié)果=表達式1*表達式2。/ 除法運算符。形成數(shù)值表達式,將兩個數(shù)值或數(shù)值表達式相除,其中除數(shù)不能為零,否則會得到一個錯誤。例如,結(jié)果=表達式1/表達式2。 整除運算符。將兩個數(shù)值或數(shù)值表達式相除,并返回一個整數(shù),即舍掉余數(shù)或者小數(shù)部分。例如,結(jié)果=表達式1表達式2。例如,73的值為2。Mod 取模運算符。將兩個數(shù)值或數(shù)值表達式相除,并只返回余數(shù)。例如,結(jié)果=表達式1 Mod 表達式2。例如,7 Mod 3的值為1。 乘冪運算符。計算數(shù)值或數(shù)值表達式的乘冪。例如,結(jié)果=數(shù)值 指數(shù)。 算術(shù)運算符的優(yōu)先順序算術(shù)運算符的優(yōu)先順序依次為:乘冪運算符()乘法和除法運算符(*、/,兩者沒有優(yōu)先順序)整除運算符()取模運算符(Mod)加法和減法運算符(+、-,兩者沒有優(yōu)先順序)。若在同一代碼中多次使用同一個算術(shù)運算符,則從左到右運算。使用括號可以改變優(yōu)先順序。連接運算符和表達式& 連接運算符,用于連接字符串。它能把一些字符串變量連接在一起,形成一個新的字符串。在進行連接運算之前,任何非字符串變量或表達式都轉(zhuǎn)換為字符串。例如,結(jié)果=字符串1&字符串2,其結(jié)果的數(shù)據(jù)類型為String類型。+ 混合連接運算符,它運用很靈活,但會與加法運算符相混,給您的閱讀帶來不便。例如,結(jié)果=表達式1+表達式2,其結(jié)果的數(shù)據(jù)類型取決于表達式的數(shù)據(jù)類型。下面對這兩種連接運算符進行測試,測試表達式為: 結(jié)果=表達式1+表達式2當兩個表達式都是數(shù)值數(shù)據(jù)時,用&運算符會將兩個數(shù)值數(shù)據(jù)連接,如5 & 1連接后為51,但用+運算符后,會將兩數(shù)值相加得到其結(jié)果,如5+1進行連接后為6。當兩個表達式都是字符串(Sting)時,將對兩個字符串進行連接為一個字符串。當兩個表達式為空時,+運算符的結(jié)果為0,而&運算符的結(jié)果為Null值。當一個表達式為數(shù)值類型數(shù)據(jù),另一個表達式為字符串類型數(shù)據(jù)時,+運算符將產(chǎn)生類型不匹配的錯誤,而&運算符則將兩個表達式連接。未聲明變量時,當一個表達式為數(shù)字,另一個表達式為字母時,+運算符和&運算符的結(jié)果均為數(shù)字,如j=7,k=student,i=j+k與i=j&k的結(jié)果均為7。當兩個表達式都為空時,+運算符結(jié)果為0,而&運算符結(jié)果為Null值。提示 您可以在VBE中調(diào)試,看看它們在各種情況下的區(qū)別。比較運算符和表達式 比較運算符包括(大于)、=(等于)、=(大于或等于)、=(小于或等于)、(不等于),用于數(shù)據(jù)元素的比較,其一般的語法為: 結(jié)果=表達式1 表達式2結(jié)果為True(1)、False(0)或者為Null。其中比較運算符可以單獨使用,也可以兩兩結(jié)合使用。如果表達式1或者表達式2本身為Null時才會產(chǎn)生Null的結(jié)果。下面結(jié)合上述語法,對這些比較運算產(chǎn)生的結(jié)果為True或False時所需要的條件進行說明: 表達式1大于并且不等于表達式2時,其結(jié)果為True;否則,為False。= 表達式1大于或者等于表達式2時,其結(jié)果為True;否則,為False。= 表達式1小于或者等于表達式2時,其結(jié)果為True;否則,為False。 表達式1不等于表達式2時,其結(jié)果為True;否則,為False。比較運算符可用于數(shù)值比較或字符串變量比較,也可用于數(shù)值與字符串的比較。如果其中一個表達式是數(shù)值,另一個是字符串,則數(shù)值表達式總是“小于”字符串表達式;如果都是字符串,則最大的字符串就是最長的字符串;如果字符串一樣長,則小寫的大于大寫的。還有一個比較運算符,即Is運算符,可用于判斷兩個對象變量是否指向同一個對象,其語法為: 結(jié)果=對象1 Is 對象2如果對象1和對象2都指向同一個對象,其結(jié)果為True;否則,結(jié)果為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,則結(jié)果返回True;只要其中一個表達式為False,其結(jié)果就是False;如果有表達式為Null,則結(jié)果為Null。其語法為:結(jié)果=表達式1 And 表達式2例如,If x1 And y1 Or y10 Then,表示如果x的值大于1,或者y的值小于10,則執(zhí)行Then后面的代碼。又如,語句MsgBox Range(“A1”)=1 Or Range(“B1”)=2表示如果當前工作表中的單元格A1中的值為1或者單元格B1中的值為2時,消息框?qū)@示True。Not 對一個表達式進行邏輯非運算,即如果表達式為True,則Not運算符使該表達式變成False;如果表達式為False,則Not運算符使該表達式變成True;如果表達式為Null,則Not運算符的結(jié)果仍然是Null。其語法為: 結(jié)果=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時,結(jié)果返回True;若一個表達式為True而另一個表達式為False時,結(jié)果返回False。其語法為: 結(jié)果=表達式1 Eqv 表達式2Imp 執(zhí)行邏輯蘊含運算,其語法為: 結(jié)果=表達式1 Imp 表達式2當兩個表達式都為True和兩個表達式都為False時,其結(jié)果為True;當表達式1為True,表達式2為False時,其結(jié)果為False;當表達式1為False,表達式2為True時,其結(jié)果為True;當表達式1為False,表達式2為Null時,其結(jié)果為True;當表達式1為True,表達式2為Null時,其結(jié)果為Null;當表達式1為Null,表達式2為True時,其結(jié)果為True;當表達式1為Null,表達式2為False時,其結(jié)果為Null;當兩個表達式都為Null時,其結(jié)果為Null。上面的表述可能有點繞口,概括地說,不管表達式1,當表達式2為真時,其結(jié)果為True;當兩個表達式都為False,或者表達式1為False,表達式2為Null時,其結(jié)果為True;當表達式1為True,表達式2為False時,結(jié)果為False;其它情況則為Null。Xor 執(zhí)行邏輯異或運算,用于判斷兩個表達式是否不同。若兩個表達式都是True或都是False時,其結(jié)果就是False;如果只有一個表達式是True,其結(jié)果就是True;如果兩個表達式中有一個是Null,其結(jié)果是Null。其語法為:結(jié)果=表達式1 Xor 表達式2 邏輯運算符的優(yōu)先順序邏輯運算符的優(yōu)先順序依次為:NotAndOrXorEqvImp。如果在同一行代碼中多次使用相同的邏輯運算符,則從左到右進行運算。運算符的優(yōu)先順序如果您不了解運算符的優(yōu)先級別(即哪個運算符優(yōu)先運算,哪個運算符最后才運算),您的表達式可能會出現(xiàn)意想不到的結(jié)果。在前面的小節(jié)中,介紹了同一類運算符的優(yōu)先順序。如果在一行代碼中包括多個運算符,則其進行運算的優(yōu)先順序是不相同的。運算符的優(yōu)先級會影響到表達式的最終結(jié)果。當一行代碼中包括幾類運算符時,其優(yōu)先順序為:算術(shù)運算符連接運算符比較運算符邏輯運算符。如果您要改變同類或不同類運算符的優(yōu)先順序,可以使用括號,括號內(nèi)的表達式總比括號外的優(yōu)先進行運算。Like運算符Like運算符用于判斷給定的字符串是否與指定的模式相匹配,其語法為:結(jié)果=字符串 Like 模式其中,字符串為要與模式相比較的字符串,如果字符串與指定的模式相匹配,則結(jié)果為True;否則,其結(jié)果為False。如果字符串或者模式Null,則結(jié)果為Null。在模式中可使用一些特殊字符,其它的字符都能與它們相匹配,這些字符有:?代表任意一個字符;*代表0或多個字符;#代表任意一個數(shù)字(0-9);charlist代表字符列表中的任意一個字符;!charlist代表不在字符列表中的任意一個字符;代表空字符串(“”)。Charlist將模式中的一組字符與字符串中的一個字符進行匹配,可以包含任何一種字符,包括數(shù)字;在Charlist中使用連字號(-)產(chǎn)生一組字符來與字符串中的一個字符相匹配,如A-D與字符串相應(yīng)位置的A、B、C或D匹配;在Charlist中可以產(chǎn)生多組字符,如A-D H-J;各組字符必須是按照排列順序出現(xiàn)的;在Charlist的開頭或結(jié)尾使用連字號(-)或以與連字號自身相匹配,例如-H-N與連字號(-)或H到N之間的任何字符相匹配;在Charlist中的一個字符或者一組字符前加上!號,表明與該字符或該組字符之外的所有字符匹配,如!H-N與字符H-N范圍之外的所有字符匹配;而在外使用!號則只匹配其自身。要使用任何特殊字符作為匹配字符,只需將它放在中即可,例如?表明要與一個問號進行匹配。下面給出一個例子。打開一個工作簿,選擇菜單“工具宏Visual Basic編輯器”或按Alt+F11組合鍵,打開VBE編輯器。在VBE編輯器中,選擇菜單“插入用戶窗體”,新建一個用戶窗體,點擊控件工具箱中的“文本框”控件和“按鈕”控件,在用戶窗體上放置一個“文本框”和一個“按鈕”,并在用戶窗體中對它們的大小和位置進行合理調(diào)整,雙擊剛創(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 IfEnd Sub本代碼中F W*表示字符以F或W開頭的字符串,使用&連接符將其與變量sEnd所代表的字符串“in Office”相連接。如果您在文本框中輸入以字符F或字符W開頭并以“in Office”結(jié)尾的句子,將顯示“輸入正確”消息框,否則將顯示“輸入錯誤”的消息框。在VBE編輯器中點擊運行按鈕或按F5鍵,運行該代碼試試。當您在文本框中輸入“Fanjy in Office”后,單擊按鈕,將顯示“輸入正確”消息框。AddressOf運算符AddressOf運算符將過程的地址傳遞給API函數(shù)。其語法為 AddressOf 過程名其中,過程名為需要傳遞給API函數(shù)地址的過程名稱。AddressOf運算符后面必須是用戶定義的函數(shù)名、過程名或?qū)傩悦?,且該過程或函數(shù)必須保存在代碼模塊中。賦值運算符在VBA中使用等號(=)作為賦值運算符,它將其右側(cè)的數(shù)據(jù)或者表達式的結(jié)果賦給左側(cè)的變量,使其在程序代碼中運用。例如,x=666,Range(“A1”).Value=”Dog”。點運算符在VBA中,使用點運算符來引用某個對象。運用點運算符,可以限定所引用的對象的位置,清楚地表明該對象的層次結(jié)構(gòu),還可以指定某對象的方法或?qū)傩浴@?,語句Workbooks(“Book1.xls”).Worksheets(“Sheet1”).Range(“A1”)表明對工作簿Book1中的工作表Sheet1上的單元格A1的引用;又如,語句Msgbox Worksheets(“Sheet1”).Range(“A1”).Value表明顯示當前工作簿中工作表Sheet1上單元格A1的值。By fanjy in 2006-7-11運算子優(yōu)先順序 當一個運算式中有數(shù)個動作發(fā)生時,各部分的動作會在預(yù)先決定的順序下完成,而此順序就是運算子的優(yōu)先順序。當運算式中有超過一種運算子時,會先執(zhí)行算術(shù)運算子,其次是比較運算子,而後才是邏輯運算子。比較運算子的優(yōu)先順序全都是相同的,也就是說依照出現(xiàn)的順序由左到右依序執(zhí)行。而算術(shù)和邏輯運算子則必須依照下列的優(yōu)先順序,依序執(zhí)行:算術(shù)比較邏輯指數(shù)運算()相等(=)Not負數(shù)(-)不等()And乘法和除法(*、 /)小於()Xor餘數(shù)運算(Mod)小於或相等(=)Imp字串連結(jié)(&)LikeIs若乘法和除法同時存在於運算式中,則計算時的順序就是依照其左右位置來決定。同樣地,若加法和減法同時存在於一個運算式中,計算時的順序就是依照其左右位置來決定。括號則可推翻優(yōu)先順序的等級,並且強迫運算式的某些部分必須優(yōu)先執(zhí)行。括號內(nèi)要比括號外部的先執(zhí)行。然而,括號中運算子的優(yōu)先順序與正常情況是一樣的。字串連結(jié)運算子(&)不是算術(shù)運算子,但是在優(yōu)先順序上它會落在所有算術(shù)運算子之後,且在所有比較運算子之前。Like 的優(yōu)先順序和所有比較運算子相同,但它實際上是屬於模式比對運算子。Is 運算子是一個物件引用比較運算子。它並非比較物件或是它們的值;而是檢查兩個物件是否引用到相同的物件。AddressOf 運算子 一個單項運算符,它將其後面的程序位址傳遞給 API 程序,該 API 程序在引數(shù)資料表對應(yīng)位置中需要一個函數(shù)指標。語法AddressOf procedurename必需的 procedurename 指定要傳遞的位址是哪一個程序位址。這個程序必須是發(fā)出呼叫指令的專案中之一個一般模組模組裡的一個程序。請注意當一個程序的名稱出現(xiàn)在一個引數(shù)清單中時,通常已經(jīng)進行該程序的評估,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【2025公開課】Recycle 2 英語教材課件
- 建筑工程質(zhì)量控制策劃書范例
- 消費電子產(chǎn)品市場動態(tài)與未來趨勢
- 樁機操作安全規(guī)程與維護指南
- 2025年九江市柴桑區(qū)殯葬事務(wù)中心公開招聘派遣制工作人員備考筆試題庫及答案解析
- 完整警情處置教案
- 高考數(shù)學(xué)二輪復(fù)習概率新人教A版教案
- 新教材高中數(shù)學(xué)第一章集合常用邏輯用語充分條件必要條件新人教B版必修第一冊教案
- 小學(xué)語文五年級豐碑之八教案
- 大學(xué)社會學(xué)概論經(jīng)典社會工作發(fā)展教案(2025-2026學(xué)年)
- 標準-醫(yī)院免陪照護服務(wù)安全管理規(guī)范(送審稿)
- 圖解《常變與長青》通過變革構(gòu)建華為組織級能力P
- 通知書產(chǎn)品升級通知怎么寫
- 氣管插管術(shù) 氣管插管術(shù)
- 大學(xué)《實驗診斷學(xué)》實驗八:病例分析培訓(xùn)課件
- GB/T 28400-2012釹鎂合金
- 多維閱讀第8級Moon Mouse 明星老鼠的秘密
- 骨髓增生異常綜合癥課件整理
- 心肌梗死院前急救課件
- 雙升基本知識-信號
- 造林技術(shù)規(guī)程
評論
0/150
提交評論