




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
VBA基礎(chǔ)(jīchǔ)(31-Oct-21)第一頁,共108頁。數(shù)組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(chǔ)(jīchǔ)VBA概念VBA概念第二頁,共108頁。1-1VBA簡介(jiǎnjiè)VBA(VisualBasicforApplication)是MicrosoftOffice系列軟件的內(nèi)置編程語言,其語法結(jié)構(gòu)與VisualBasic編程語言互相兼容,采用的是面向?qū)ο蟮木幊虣C制(jīzhì)和可視化的編程環(huán)境。第三頁,共108頁。1-2面向?qū)ο蟪绦蛟O(shè)計(chénɡxùshèjì)的基本概念1.集合和對象VBA中的應(yīng)用程序是由許多對象組成的,如表、窗體、查詢等。對象是幫助構(gòu)造應(yīng)用程序的元素,以特定的方式組織這些(zhèxiē)對象,就形成了應(yīng)用程序。2.對象的屬性、事件和方法屬性屬性描述了對象的自身(zìshēn)性質(zhì)其格式為:對象名.屬性=屬性值第四頁,共108頁。1-2面向?qū)ο蟪绦蛟O(shè)計(chénɡxùshèjì)的基本概念事件事件是指可以發(fā)生在一個(yīɡè)對象上且能夠被該對象所識別的動作。如:單擊某個命令按鈕就產(chǎn)生該按鈕的“單擊”事件當某個對象發(fā)生某一事件后,就會驅(qū)動系統(tǒng)去執(zhí)行預(yù)先編好的、與這一事件相對應(yīng)的一段程序。方法方法是系統(tǒng)事先設(shè)計好的,可以完成一定操作的特殊過程,是附屬(fùshǔ)于對象的行為和動作。在需要使用的時候可以直接調(diào)用。其格式為: 對象名.方法名第五頁,共108頁。常見(chánɡjiàn)對象及其含義對象名含義Application代表整個Excel應(yīng)用程序Window代表窗口Worksheet代表一個工作表Sheets指定的或活動工作薄中所有工作表的集合ShapeRange代表形狀區(qū)域,它是文檔中的一組形狀PivotTable代表工作表上的數(shù)據(jù)透視圖Workbook代表一個Excel工作薄Shape代表繪圖層中的對象,例如自選圖形Range代表某一單元格、某一行、某一列、某一區(qū)域Name代表單元格區(qū)域的自定義名Chart代表工作薄中的圖表FileDialog提示文件對話框,功能和應(yīng)用程序中標準“打開”和“保存”對話框類似CommandBarPopup代表命令欄上的一個彈出式控件CommandBar代表容器應(yīng)用程序中的一個命令欄第六頁,共108頁。1-3VBA編程環(huán)境(huánjìng)VBA中的程序與函數(shù)共有4種:一般程序(Sub)、事件(shìjiàn)程序(Event)、屬性程序(Property)和函數(shù)(Function)VBA程序窗口共6種:代碼窗口、立即窗口、本地窗口、監(jiān)視窗口、工程資源管理器和屬性窗口在VBE環(huán)境中編寫VBA代碼第七頁,共108頁。工程(gōngchéng)窗口-選擇對象屬性(shǔxìng)窗口-選擇對象的屬性(shǔxìng)代碼(dàimǎ)窗口選擇事件VBE編程環(huán)境第八頁,共108頁。標準(biāozhǔn)工具條視圖MicrosoftExcel按鈕:切換Excel窗口(chuāngkǒu)插入按鈕:插入模塊或過程運行子過程/用戶窗體按鈕:運行模塊中的程序中斷按鈕:中斷正在運行的程序重新設(shè)置按鈕:結(jié)束正在運行的程序設(shè)置模式按鈕:在設(shè)計模式和非設(shè)計模式之間切換工程資源管理器按鈕:用于打開工程資源管理器屬性窗口(chuāngkǒu)按鈕:用于打開屬性窗口(chuāngkǒu)對象瀏覽器按鈕:用于打開對象瀏覽器Microsoft
Excel插入(chārù)模塊運行子過程/用戶窗體設(shè)計模式中斷重新設(shè)計工程資源管理器對象瀏覽器屬性窗口第九頁,共108頁。新建一個窗體并添加兩個命令(mìnglìng)按鈕,運行窗體后,單擊第一個按鈕,顯示一個消息框;單擊第二個按鈕,退出當前窗體通過此例,體會可視化編程、面向?qū)ο蟆⑹录?shìjiàn)過程、應(yīng)用方法等基本概念。第十頁,共108頁。數(shù)組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(chǔ)(jīchǔ)VBA概念VBA編程基礎(chǔ)第十一頁,共108頁。2-1常量(chángliàng)、變量VBA使用常量(chángliàng)、變量來存儲值。用來保存在程序運行期間數(shù)據(jù)。常量(chángliàng):在程序運行中其存儲的值不會改變。變量:在程序運行中其值可以改變。第十二頁,共108頁。2-1-1常量(chángliàng)在程序運行過程中,其值不會被改變的量稱為常量。在VBA中有三類(sānlèi)常量:1.直接常量如:10,20%,123.0,“AB”,“VBA程序設(shè)計”等2.符號常量3.系統(tǒng)常量指VBA系統(tǒng)預(yù)先定義好的,用戶可以直接引用的量。如:acForm,acQuery,vbOk,vbRed第十三頁,共108頁。符號(fúhào)常量在程序中,某個常量多次被使用,則可以使用一個符號來代替該常量,這樣不僅在書寫上方便,而且有效地改進(gǎijìn)了程序的可讀性和可維護性。VBA中使用關(guān)鍵字Const聲明符號常量。其格式如下:Const常量名[類型符號]=常數(shù)表達式如:ConstPI#=3.1415926第十四頁,共108頁。2-1-2變量(biànliàng)變量(biànliàng)是內(nèi)存中的臨時單元,存放在程序執(zhí)行過程中產(chǎn)生的中間結(jié)果和最后輸出結(jié)果。在程序中使用變量(biànliàng),就要給變量(biànliàng)定義名稱及類型,即對變量(biànliàng)進行聲明。第十五頁,共108頁。變量(biànliàng)命名規(guī)則1.變量名必須以字母或漢字開頭,后可跟字母、漢字、數(shù)字或下劃線組成(不能含有(hányǒu)小數(shù)點和空格),長度不超過255個字符的字符串;2.不能使用VBA中的關(guān)鍵字;3.VBA中不區(qū)分變量名的大小寫;4.變量名的最后一個字符可以是%、&、!、#、$等表示數(shù)據(jù)類型的聲明符。說明:常量名的命名規(guī)則與變量名的命名規(guī)則相同第十六頁,共108頁。2-2數(shù)據(jù)類型與變量(biànliàng)的聲明在VBA中,數(shù)據(jù)類型用來決定變量可以保存何種數(shù)據(jù)。VBA支持多種數(shù)據(jù)類型,為用戶編程提供(tígōng)了方便。第十七頁,共108頁。2-2-1VBA的數(shù)據(jù)類型數(shù)據(jù)類型類型聲明符存儲空間取值范圍整型(Integer)%2-32768~32767長整型(Long)&4-2147483648~2147483647單精度浮點型(Single)!4負數(shù):-3.402823E38~-1.401298E-45正數(shù):1.401298E-45~3.402823E38雙精度浮點型(Double)#8負數(shù):-1.79769313486232E308~-4.94065645841247E-324正數(shù):4.94065645841247E-324~1.79769313486232E308貨幣型(Currency)@8-922337203685477.5808~922337203685477.5807日期型(Date)8100年1月1日~9999年12月31日字符型(String)$0字符~65400個字符字節(jié)型(Byte)10~255邏輯型(Boolean)2True或False對象型(Object)4任何引用的對象變體型(Variant)第十八頁,共108頁。2-2-2變量(biànliàng)聲明用Dim或Static語句顯式聲明局部變量格式:Dim變量名[AS類型]或Dim變量名類型符語句中的“As類型”子句是可選的。如果使用該子句,就可以定義變量的數(shù)據(jù)類型。未使用,默認變量的類型為變體型(Variant)。例如:DimiAsinteger,s表示(biǎoshì)聲明了一個名為i的整型變量和一個名為s的變體型變量。第十九頁,共108頁。關(guān)鍵字Dim或Static的區(qū)別(qūbié)Dim聲明:隨過程的調(diào)用而分配存貯單元(dānyuán),每次調(diào)用都對變量初始化;過程體結(jié)束,變量的內(nèi)容自動消失,存儲單元(dānyuán)釋放。Static聲明:Static聲明的變量,也稱為靜態(tài)變量。靜態(tài)變量在程序運行過程中一直保留其值,即每次調(diào)用過程,變量保持原來的值。第二十頁,共108頁。數(shù)據(jù)類型的轉(zhuǎn)換(zhuǎnhuàn)函數(shù)列表函數(shù)返回類型CByteByteCBoolBooleanCIntIntegerCLngLong(長整型)CSngSingle(單精度浮點型)CDblDouble(雙精度浮點型)CCurCurrency(變比整數(shù))CDecDecimalCDateDateCStrStringCvarVariant第二十一頁,共108頁。識別(shíbié)數(shù)據(jù)類型的函數(shù)TypeNameSubabc()DimiAsIntegerDimstrAsStringi=10MsgBoxTypeName(i)str=CStr(i)MsgBoxTypeName(str)EndSub第二十二頁,共108頁。隱式聲明(shēngmíng)變量未進行上述的聲明而直接使用變量(biànliàng),稱變量(biànliàng)的隱式聲明,采用隱式聲明的變量(biànliàng)都是變體型(Variant)。
注意:VBA中允許不事先聲明而直接使用變量(biànliàng),可以通過語句OptionExplicit,來要求所使用的變量(biànliàng)必須事先聲明,否則VBA會發(fā)出警告信息。第二十三頁,共108頁。變量a,b,Sum都沒有(méiyǒu)事先定義PrivateSubForm_Click()Sum=0a=10b=20Sum=a+bDebug.Print"Sum="&SumEndSub良好的編程習(xí)慣應(yīng)該是“先聲明變量,后使用(shǐyòng)變量”,這樣做可以提高程序的效率,同時也使程序易于調(diào)試。VBA中可以強制顯式聲明,可以在窗體模塊、標準模塊和類模塊的通用聲明段中加入語句:OptionExplicit第二十四頁,共108頁。變量(biànliàng)的初始化聲明(shēngmíng)而未賦值的變量的值為:數(shù)值型變量初始化為0;字符型變量為零長度字符串;變體型變量初始化為Empty;第二十五頁,共108頁。2-3-1算術(shù)(suànshù)運算符第二十六頁,共108頁。2-3-2連接(liánjiē)運算符連接(liánjiē)運算符:&、+(字符串連接(liánjiē))例如:"123"+"456"結(jié)果"123456""123"&"456"結(jié)果"123456"使用上&與+的區(qū)別:例如:"abcdef"&12345結(jié)果為"abcdef12345" "123"&456結(jié)果為"123456" "abcdef"+12345結(jié)果為出錯"123"+456結(jié)果為579
第二十七頁,共108頁。2-3-3關(guān)系(guānxì)運算符將兩個操作數(shù)進行大小比較,結(jié)果(jiēguǒ)為邏輯值。注意:字符串比較,則按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止。第二十八頁,共108頁。2-3-4邏輯(luójí)運算符將操作數(shù)進行(jìnxíng)邏輯運算,結(jié)果是邏輯值第二十九頁,共108頁。舉例(jǔlì)例1:用人單位招聘秘書:年齡小于40歲的女性,學(xué)歷(xuélì)專科或本科正確(zhèngquè)的VBA表達式:3〈=xAndx<=7錯誤的VBA表達式:3<=x<=7或3<=xOrx<=7
年齡<40,性別=“女”,(學(xué)歷=“專科”,學(xué)歷=“本科”)
AndAndOr例2:算術(shù)表達式:第三十頁,共108頁。2-3-5簡單(jiǎndān)的字符處理函數(shù)作用關(guān)鍵字OptionCompare設(shè)置字符串比較規(guī)則StrComp比較兩個字符串StrConv字符串類型轉(zhuǎn)換Lcase、Ucase大小寫變換Space、String重復(fù)字符串Len計算字符串長度Format設(shè)置字符格式Lset、Rset重排字符串InStr、Left、Ltrim、Mid、RightRtrim、Trim處理字符串Split、Join拆分與連接字符串第三十一頁,共108頁。OptionCompare設(shè)置(shèzhì)字符串比較規(guī)則OptionCompare{Binary|Text|Database}OptionCompareBinary:是根據(jù)字符的內(nèi)部二進制表示導(dǎo)出的一種排序(páixù)A-Z<a-z<漢字OptionCompareText:是根據(jù)系統(tǒng)區(qū)域確定的一種不區(qū)分大小寫的一種排序(páixù)(A=a)<(B=b)<(Z=z)結(jié)果(jiēguǒ):True結(jié)果:False第三十二頁,共108頁。StrComp比較(bǐjiào)兩個字符串第三十三頁,共108頁。StrConv字符串類型轉(zhuǎn)換常量說明vbUpperCase將字符串文字轉(zhuǎn)成大寫vbLowerCase將字符串文字轉(zhuǎn)成小寫vbProperCase將字符串中每個字的開頭字母轉(zhuǎn)成大寫vbWide將字符串中單字節(jié)字符轉(zhuǎn)成雙字節(jié)字符vbNarro將字符串中雙字節(jié)字符轉(zhuǎn)成單字節(jié)字符vbKatakana將字符串中平假名字符轉(zhuǎn)成片假名字符vbHiragana將字符串中片假名字符轉(zhuǎn)成平假名字符vbUnicode根據(jù)系統(tǒng)的默認碼頁將字符串轉(zhuǎn)成UnicodevbFromUnicode將字符串由Unicode轉(zhuǎn)成系統(tǒng)的默認碼頁第三十四頁,共108頁。StrConv字符串類型轉(zhuǎn)換(例)MsgBoxstrConv("English",vbUpperCase)&Chr(10)&strConv("English",vbLowerCase)&Chr(10)&strConv("english",vbProperCase)&Chr(10)&strConv("English",vbWide)第三十五頁,共108頁。Format格式化字符串MsgBoxFORMAT(Date,"yyyy年m月d日")&Chr(10)&FORMAT(Date,"aaaa"),vbaOKOnly,"現(xiàn)在(xiànzài)是"第三十六頁,共108頁。LCase/UCase大小寫轉(zhuǎn)換(zhuǎnhuàn)Sub大小寫轉(zhuǎn)換(zhuǎnhuàn)()MsgBoxLCase("HELLOWORLD")&Chr(10)&UCase("helloworld")EndSub第三十七頁,共108頁。String/Space重復(fù)(chóngfù)字符Sub重復(fù)(chóngfù)字符()MsgBoxString(5,"$")&Space(3)&String(5,"*")EndSub第三十八頁,共108頁。Lset/Rset字符串往左/右對齊(duìqí)Sub字符左右對齊(duìqí)()Dimstr1,str2AsStringstr1="大連華信計算機技術(shù)股份有限公司"LSetstr1="華信培訓(xùn)"str2="大連華信計算機技術(shù)股份有限公司"RSetstr2="華信培訓(xùn)"MsgBox"["&str1&"]"&Chr(10)&"["&str2&"]"EndSub第三十九頁,共108頁。Instr返回字符(zìfú)出現(xiàn)位置Sub查找位置(wèizhi)()MsgBoxInStr("大連華信計算機技術(shù)股份有限公司","信")EndSub第四十頁,共108頁。Left/Mid/Right從左、中、右取值Sub取值()DimstrAsStringstr="大連華信計算機技術(shù)股份(gǔfèn)有限公司"MsgBoxLeft(str,2)&Mid(str,3,2)&Right(str,2)EndSub第四十一頁,共108頁。LTrim/RTrim/Trim去除(qùchú)空格Subabc()Dimstr1,str2AsStringstr1="大連"str2="華信"'MsgBoxTrim(str1&str2)&"666"MsgBoxLTrim(str1)&RTrim(str2)&"666"EndSub第四十二頁,共108頁。Like字符串相似(xiānɡsì)度比較Subabc()'result=stringlikpattern'?任何單一字符'*零個或多個(duōɡè)字符'#任何一個數(shù)字(0-9)Dimstr1AsStringstr1="abda"Ifstr1Like"*"ThenMsgBox"*相似"Ifstr1Like"a???"ThenMsgBox"?相似"If1234Like"####"ThenMsgBox"#相似"EndSub第四十三頁,共108頁。2-4表達式組成由變量、常量、函數(shù)(hánshù)等運算對象加上運算符、圓括號組成的式子。書寫規(guī)則(1)運算符不能相鄰。例a+-b是錯誤的。(2)乘號不能省略。例x乘以y應(yīng)寫成:x*y。(3)括號必須成對出現(xiàn),均使用圓括號。(4)表達式從左到右在同一基準上書寫,無高低。運算優(yōu)先級算術(shù)運算符>連接運算符>關(guān)系運算符>邏輯運算第四十四頁,共108頁。2-5常用(chánɡyònɡ)函數(shù)函數(shù)實際上是系統(tǒng)事先定義好的內(nèi)部程序,用來(yònɡlái)完成特定的功能。VBA提供了大量的內(nèi)部函數(shù),供用戶在編程時使用。函數(shù)的調(diào)用形式為:函數(shù)名(參數(shù)表)常用內(nèi)部函數(shù) 常用內(nèi)部函數(shù),在立即窗口練習(xí),體會函數(shù)的功能。[請參照:VBA函數(shù)參考手冊]第四十五頁,共108頁。2-6模塊(mókuài)、函數(shù)和過程模塊是自定義的過程、函數(shù)保存的地方(dìfāng),也是錄制的宏保存的場所。有兩種基本類型的模塊:類模塊和標準模塊。模塊可以通過右鍵單擊工程資源管理器的工程名,選擇“插入-模塊”來新建。新建的模塊缺省的名稱為“模塊1”,“模塊2”,建議在屬性窗口內(nèi)更改為有意義的名稱。模塊任務(wù):(1)保存(bǎocún)過程和函數(shù);(2)定義模塊內(nèi)的私有變量或整個工程的公有變量。第四十六頁,共108頁。2-7過程(guòchéng)過程是最基本的運行單位語法(yǔfǎ)[Private|Public|Friend][Static]Subname[(arglist)]
[statements]
[ExitSub]
[statements]EndSub在以上程序中,Sub代表過程種類,表示運行指定的操作,但不返回運行結(jié)果;第四十七頁,共108頁。部分(bùfen) 描述Public可選的。表示所有模塊的所有其它過程都可訪問這個Sub過程。如果在包含OptionPrivate的模塊中使用,則這個過程在該工程外是不可使用的。Private可選的。表示只有在包含其聲明的模塊中的其它過程可以訪問該Sub過程。Friend可選的。只能在類模塊中使用。表示該Sub過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。Static可選的。表示在調(diào)用之間保留Sub過程的局部變量的值。Static屬性對在Sub外聲明的變量不會產(chǎn)生影響,即使過程中也使用了這些變量。name必需的。Sub的名稱;遵循標準的變量命名約定。arglist可選的。代表在調(diào)用時要傳遞給Sub過程的參數(shù)的變量列表。多個變量則用逗號隔開。statements可選的。Sub過程中所執(zhí)行的任何語句組。第四十八頁,共108頁。2-8函數(shù)(hánshù)函數(shù)是具有(jùyǒu)返回值的過程語法[Public|Private|Friend][Static]Functionname[(arglist)][Astype][statements][name=expression][ExitFunction][statements][name=expression]EndFunction第四十九頁,共108頁。部分(bùfen) 描述Public可選的。表示所有模塊的所有其它過程都可訪問這個Function過程。如果是在包含OptionPrivate的模塊中使用,則這個過程在該工程外是不可使用。Private可選的。表示只有包含其聲明的模塊的其它過程可以訪問該Function過程。Friend可選的。只能在類模塊中使用。表示該Function過程在整個工程中都是可見的,但對于對象實例的控制者是不可見的。Static可選的。表示在調(diào)用之間將保留Function過程的局部變量值。Static屬性對在該Function外聲明的變量不會產(chǎn)生影響,即使過程中也使用了這些變量。name必需的。Function的名稱;遵循標準的變量命名約定。arglist可選的。代表在調(diào)用時要傳遞給Function過程的參數(shù)變量列表。多個變量應(yīng)用逗號隔開。type可選的。Function過程的返回值的數(shù)據(jù)類型,可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定長)、Object、Variant或任何用戶定義類型。statements可選的。在Function過程中執(zhí)行的任何語句組。expression可選的。Function的返回值。第五十頁,共108頁。函數(shù)和過程(guòchéng)區(qū)別調(diào)用一個過程(Sub)時,必須鍵入過程名稱以及任何需要的參數(shù)值。Call語句可有可無,如果使用它,則參數(shù)必須以括號括起來。調(diào)用函數(shù)(Function)時,為了使用函數(shù)的返回值,必須指定函數(shù)給變量,并且(bìngqiě)用括號將參數(shù)封閉起來。第五十一頁,共108頁。數(shù)組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(chǔ)(jīchǔ)VBA概念VBA常用語句第五十二頁,共108頁。3-1VBA語句(yǔjù)書寫規(guī)則VBA代碼不區(qū)分字母的大小寫系統(tǒng)保留字自動轉(zhuǎn)換每個單詞的首字母大寫;語句書寫自由一行(yīxíng)可書寫幾句語句,之間用冒號(:)分隔;一句語句可分若干行書寫,用續(xù)行符(_)將語句分開。第五十三頁,共108頁。3-2VBA常用(chánɡyònɡ)語句賦值語句:給變量、常量或?qū)ο蟮膶傩灾付ㄒ粋€值或表達式。格式:變量名=表達式作用:將表達式的值賦值給變量名。一般用于給變量賦值或?qū)丶O(shè)定屬性值。例如:s=10Text1.Text="歡迎使用VBA"注意:雖然賦值號與關(guān)系運算符等于號都用“=”表示,VBA會根據(jù)(gēnjù)所處的位置自動判斷是何種意義的符號第五十四頁,共108頁。聲明語句:命名和定義常量、變量、數(shù)組以及過程(guòchéng)。注釋語句在程序中的適當位置加上注釋語句有利于程序的維護和閱讀。格式:Rem注釋內(nèi)容 或用單引號’注釋內(nèi)容第五十五頁,共108頁。數(shù)組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(chǔ)(jīchǔ)VBA概念VBA程序流程控制第五十六頁,共108頁。順序、分支(fēnzhī)、循環(huán)結(jié)構(gòu)(jiégòu)化程序設(shè)計由順序、分支、循環(huán)這3種基本結(jié)構(gòu)(jiégòu)所組成。語句組2語句組1TF語句組2條件語句組1FT條件語句組TF條件語句組第五十七頁,共108頁。4-1分支(fēnzhī)結(jié)構(gòu)單行If語句格式:If表達式Then語句1[Else語句2]功能:If測試指定的條件,如果條件表達式為真(True),則執(zhí)行Then后面的語句1,否則(fǒuzé)執(zhí)行語句2(若Else子句未省略)。TF語句2條件語句1TF條件語句1第五十八頁,共108頁。PrivateSubp1()DimxAsInteger,yAsIntegerx=InputBox(“請輸入(shūrù)x值”)Ifx>=0Theny=2*x+1Elsey=1MsgBox"y:"&yEndSub根據(jù)輸入x的值,觀察y的輸出(shūchū)結(jié)果單行If語句(yǔjù)舉例第五十九頁,共108頁。
多行If語句(yǔjù)語句組可以由一條(yītiáo)或多條語句組成,語句組不能與Then書寫在同一行,否則VBA認為是一個單行If語句,會導(dǎo)致Else沒有匹配的If。語句“EndIf”是多行If語句的結(jié)束標志。在多行If語句中,即使省略Else子句,也要寫該結(jié)束標志。省略Else子句時的多行If語句形式為:If表達式Then語句組 EndIf第六十頁,共108頁。例:計算分段(fēnduàn)函數(shù)單行(dānxínɡ)If語句實現(xiàn):Ifx=0Theny=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)多行If語句(yǔjù)實現(xiàn):Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf第六十一頁,共108頁。If語句(yǔjù)的嵌套If語句的嵌套是指If或Else后面(hòumian)的語句塊中又包含If語句。If<表達式1>ThenIf<表達式11>Then…EndIf…EndIf第六十二頁,共108頁。例:已知x,y,z三個數(shù),使得(shǐde)x>y>z用一個IF語句和一個嵌套的IF語句實現(xiàn)Ifx<yThent=x:x=y:y=t
Ify<zThent=y:y=z:z=t
Ifx<yThent=x:x=y:y=tEndIf
EndIfIf語句(yǔjù)的嵌套注意事項:書寫鋸齒型;If與EndIf配對第六十三頁,共108頁。If<表達式1>Then <語句(yǔjù)塊1>ElseIf<表達式2>Then <語句(yǔjù)塊2> … [Else語句(yǔjù)塊n+1]EndIfIf…Then…ElseIf語句(多分支(fēnzhī)結(jié)構(gòu))第六十四頁,共108頁。說明(shuōmíng)不管有幾個分支,依次判斷,當某條件滿足,執(zhí)行相應(yīng)(xiāngyīng)的語句,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。ElseIf不能寫成ElseIf。第六十五頁,共108頁。例:已知百分制成績mark,顯示對應(yīng)的五級制成績下列三種方法(fāngfǎ)哪些正確,哪些錯誤?方法一Ifmark>=90ThenPrint"優(yōu)"ElseIfmark>=80ThenPrint"良"ElseIfmark>=70ThenPrint"中"ElseIfmark>=60ThenPrint"及格"ElsePrint"不及格"EndIf方法二Ifmark<60ThenPrint"不及格"ElseIfmark<70ThenPrint"及格"ElseIfmark<80ThenPrint"中"ElseIfmark<90ThenPrint"良"ElsePrint"優(yōu)"EndIf方法三Ifmark>=60ThenPrint"及格"ElseIfmark>=70ThenPrint"中"ElseIfmark>=80ThenPrint"良"ElseIfmark>=90ThenPrint"優(yōu)"ElsePrint"不及格"EndIf第六十六頁,共108頁。<表達式列表>:與<變量或表達式>同類型的下面四種(sìzhǒnɡ)形式之一:表達式例:"A"一組枚舉表達式(用逗號分隔)2,4,6,8表達式1To表達式2 60To100 Is關(guān)系運算符表達式 Is<60語句(yǔjù)格式: SelectCase變量或表達式 Case表達式列表1 語句(yǔjù)塊1 Case表達式列表2 語句(yǔjù)塊2 … [CaseElse 語句(yǔjù)塊n+1] EndSelect數(shù)值(shùzí)型或字符串表達式SelectCase語句(情況語句)第六十七頁,共108頁。程序(chéngxù)流程圖語句塊n+1語句塊1語句塊2語句塊n條件2TF…...條件nTF條件1TF第六十八頁,共108頁。變量strC中存放一個字符,判斷(pànduàn)該字符類型第六十九頁,共108頁。例如:在輸入成績文本框中輸入一個分數(shù),單擊“判斷(pànduàn)”命令按鈕后,在成績等級文本框中顯示對應(yīng)的成績等級。輸入的成績在90~100分為A,80~89分為B,70~79分為C,60~69分為D,0~59分為E,否則顯示出錯信息。注意:根據(jù)題意,當輸入的成績不在[0,100]內(nèi)時,應(yīng)顯示出錯信息,在該范圍內(nèi)時,應(yīng)進行分等級。判斷是否(shìfǒu)為合法成績可用If語句,而分等級最好使用SelectCase語句。第七十頁,共108頁。條件(tiáojiàn)函數(shù)IIf函數(shù)形式為:IIf(表達式,當表達式為True時的值,當表達式為False時的值)例如:求x,y中大(zhōnɡdà)的數(shù),放入max變量中。 max=IIf(x>y,x,y)第七十一頁,共108頁。循環(huán)(xúnhuán)結(jié)構(gòu)For…Next循環(huán)(xúnhuán)Do…Loop循環(huán)(xúnhuán)第七十二頁,共108頁。For…Next循環(huán)(xúnhuán)語句For…Next循環(huán)結(jié)構(gòu):將一段程序重復(fù)(chóngfù)執(zhí)行指定的次數(shù),其中使用一個計數(shù)變量,統(tǒng)計執(zhí)行的次數(shù)。格式:For循環(huán)變量=初值to終值[Step步長]語句塊 [ExitFor] 語句塊Next[循環(huán)變量]循環(huán)體第七十三頁,共108頁。循環(huán)變量得初值循環(huán)變量<=終值ExitFor語句塊循環(huán)變量加步長結(jié)束False語句塊True第七十四頁,共108頁。注意(zhùyì)功能:執(zhí)行For語句(yǔjù)時,“循環(huán)變量”設(shè)為“初值”;執(zhí)行到Next語句(yǔjù)時,步長加(減)到循環(huán)變量上;再執(zhí)行For語句時,若“循環(huán)變量”超過“終值”則循環(huán)結(jié)束。步長:未指定值時默認為1。若“步長”是正數(shù)或0,則“初值”應(yīng)大于等于“終值”,否則,“初值”應(yīng)小于等于“終值”。第七十五頁,共108頁。例:計算累加程序(chéngxù)S=1+2+3+4….+x,并輸出結(jié)果方法:接收一個累加的終值,確定一個循環(huán)變量,循環(huán)變量有2個作用(加數(shù)和循環(huán)變量),確定一個存儲(cúnchǔ)累加和的變量。使用循環(huán)計算,最后輸出顯示結(jié)果。DimsAsinteger,xAsintegerx=InputBox("請輸入累加的終值")Fori=lToxs=s+iNext思考:計算=1+3+5+7…X或2+4+6+8…X如何編寫?第七十六頁,共108頁。例:計算(jìsuàn)累乘程序S=1*2*3*4…X方法:接收一個累乘的終值,確定一個循環(huán)變量,循環(huán)變量有2個作用(乘數(shù)和循環(huán)變量),確定一個存儲累乘積的變量。使用(shǐyòng)循環(huán)計算,最后輸出顯示結(jié)果。DimSAsinteger,iAsintegerx=InputBox("請輸入累加的終值")S=1Fori=lToxS=S*iNext注意:累乘的乘數(shù)和乘積變量的初值為1。第七十七頁,共108頁。注意:出了循環(huán),循環(huán)控制變量值的問題。例程序段:Fori=2To13Step3循環(huán)執(zhí)行(zhíxíng)次數(shù)debug.Printi 輸出i的值分別為:25811Nextidebug.Printi出了循環(huán)輸出為:i=14第七十八頁,共108頁。例:改變循環(huán)(xúnhuán)控制變量對循環(huán)(xúnhuán)的影響PrivateSubCommand1_Click()j=0Fori=1To20Step2i=i+3j=j+1Print"第";j;"次循環(huán)i=";iNextiPrint"退出(tuìchū)循環(huán)后i=";iEndSub正常情況:i=1,3,5,7,9,11,13,15,17,19現(xiàn)在:i=4,9,14,19第七十九頁,共108頁。Do…Loop循環(huán)(xúnhuán)語句形式1:Do{While|Until}<條件(tiáojiàn)>語句塊[ExitDo語句塊]Loop第八十頁,共108頁。形式2:Do語句(yǔjù)塊[ExitDo語句(yǔjù)塊]Loop{While|Until}<條件>Do…Loop循環(huán)(xúnhuán)語句第八十一頁,共108頁。Do…Loop語句(循環(huán)(xúnhuán)結(jié)構(gòu))DoWhile…Loop語句(yǔjù)DoUntil…Loop語句(yǔjù)Do…LoopWhile語句(yǔjù)Do…LoopUntil語句(yǔjù)第八十二頁,共108頁。DoWhile…Loop語句(yǔjù)i=1DoWhilei<=10s=s+ii=i+1Loop當i<=10成立(chénglì)時,執(zhí)行循環(huán)體循環(huán)變量i必須有初值防止產(chǎn)生死循環(huán)有可能一次也不執(zhí)行循環(huán)體修改循環(huán)(xúnhuán)控制變量,改變加數(shù)值第八十三頁,共108頁。
Do…LoopWhilei=1Dos=s+ii=i+1LoopWhilei<=10當i<=10成立(chénglì)時,執(zhí)行循環(huán)體循環(huán)變量i必須有初值防止產(chǎn)生死循環(huán)至少執(zhí)行一次循環(huán)體修改循環(huán)控制變量,改變(gǎibiàn)加數(shù)值第八十四頁,共108頁。DoUntil…Loopi=1DoUntili>10s=s+ii=i+1Loop當i>10成立時,結(jié)束執(zhí)行循環(huán)(xúnhuán)體循環(huán)(xúnhuán)變量i必須有初值防止產(chǎn)生死循環(huán)(xúnhuán)有可能一次也不執(zhí)行循環(huán)(xúnhuán)體修改(xiūgǎi)循環(huán)控制變量,改變加數(shù)值第八十五頁,共108頁。Do…LoopUntili=1Dos=s+ii=i+1LoopUntili>10當i>10成立時,結(jié)束執(zhí)行循環(huán)體循環(huán)變量i必須有初值防止(fángzhǐ)產(chǎn)生死循環(huán)至少執(zhí)行一次循環(huán)體修改(xiūgǎi)循環(huán)控制變量,改變加數(shù)值第八十六頁,共108頁。補充(bǔchōng):While…Wend語句格式如下: While<條件> <循環(huán)塊> Wend說明:該語句(yǔjù)的功能與DoWhile<條件>….Loop實現(xiàn)的循環(huán)完全相同。第八十七頁,共108頁。注意(zhùyì)三種循環(huán)(xúnhuán)語句:即For、Do—Loop,共同的特點是重復(fù)執(zhí)行一個語句系列(循環(huán)(xúnhuán)體),不同點是控制重復(fù)次數(shù)的時機和方法不一樣。第八十八頁,共108頁。數(shù)組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(chǔ)(jīchǔ)VBA概念數(shù)組第八十九頁,共108頁。5-1數(shù)組的概念(gàiniàn)數(shù)組:數(shù)組不是一種數(shù)據(jù)類型,而是一組相同(xiānɡtónɡ)類型的變量的集合??梢韵袷褂闷胀ㄗ兞恳粯邮褂脭?shù)組中的每一個元素。使用數(shù)組的好處是用一個數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標表示該數(shù)組中的各個元素,可以提高處理數(shù)據(jù)的效率,縮短和簡化程序。第九十頁,共108頁。5-2數(shù)組的定義(dìngyì)數(shù)組不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合(jíhé),數(shù)組必須先聲明后使用。兩類數(shù)組:靜態(tài)(定長)數(shù)組、動態(tài)(可變長)數(shù)組1.一維數(shù)組定義一維數(shù)組的形式:Dim數(shù)組名([下界To]上界)[As類型]聲明了數(shù)組的名、維數(shù)、大小、類型第九十一頁,共108頁。說明(shuōmíng):數(shù)組名的命名規(guī)則與變量的命名相同。數(shù)組的元素個數(shù):上界-下界+1。缺省<下界>為0,若希望下標從1開始,可在模塊的通用部分使用(shǐyòng)OptionBase語句將設(shè)為1。其使用(shǐyòng)格式是:OptionBase0|1'后面的參數(shù)只能取0或1例如:OptionBase1'將數(shù)組聲明中缺省<下界>下標設(shè)為1<下界>和<上界>不能使用(shǐyòng)變量,必須是常量,常量可以是直接常量、符號常量,一般是整型常量。第九十二頁,共108頁。例:Dimmark(1to100)AsInteger例:Dima(-1to3)AsInteger聲明(shēngmíng)一維數(shù)組a,包含了5個整型元素a(-1)、a(0)、a(1)、a(2)、a(3);如果省略As子句,則數(shù)組的類型為變體類型。數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲空間,一維數(shù)組在內(nèi)存中存放的順序是按下標(xiàbiāo)大小的順序。第九十三頁,共108頁。注意(zhùyì):在定義靜態(tài)數(shù)組時,每一維的元素個數(shù)必須是常數(shù),不能是變量或表達式。如:錯誤的聲明,下標(xiàbiāo)是變量Dimx(n)或:n=Inputbox(“輸入n”)Dimx(n)AsSingle第九十四頁,共108頁。在數(shù)組聲明(shēngmíng)中的下標說明了數(shù)組的整體,即每維的大小;而在程序其他地方出現(xiàn)的下標表示數(shù)組中的一個元素。兩者寫法形式相同,但意義不同。例如:Dimx(10)AsInteger
x(10)=100
表示(biǎoshì)聲明了數(shù)組x,有11個數(shù)組元素對x(10)這個(zhège)數(shù)組元素賦值第九十五頁,共108頁。5-3
二維數(shù)組定義二維數(shù)組的形式:Dim數(shù)組名([下界1To]上界1,下界2To]上界2)As類型例如(lìrú):Dima(2,3)AsSingle二維數(shù)組在內(nèi)存的存放順序是“先行后列”。數(shù)組a的各元素在內(nèi)存中的存放順序是: a(0,0)→a(0,1)→a(0,2)→a(0,3) a(1,0)→a(1,1)→a(1,2)→a(1,3) a(2,0)→a(2,1)→a(2,2)→a(2,3)第九十六頁,共108頁。例:DimlArray(0To3,0To4)AsLong
共有4×5個元素(yuánsù)等價于:DimlArray(3,4)AsLong第九十七頁,共108頁。5-4動態(tài)(dòngtài)數(shù)組動態(tài)數(shù)組指在聲明數(shù)組時未給出數(shù)組的大小(省略括號中的下標),當要使用它時,隨時用ReDim語句重新指出數(shù)組大小。形式(xíngshì)如下: ReDim數(shù)組名(下標[,下標2…])[As類型]例:PrivateSubS1()Dimx()AsSingle …n=Inputbox(“輸入n”)ReDim
溫馨提示
- 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年度資質(zhì)借用與投標環(huán)境保護合作協(xié)議
- 二零二五年度智能交通管理系統(tǒng)單方解除合同
- 2025年度跨海大橋旋挖灌注樁施工合同
- 二零二五年度防盜門市場調(diào)研與采購合作協(xié)議
- 二零二五年度生物技術(shù)專利申請合作協(xié)議
- 二零二五年度體育健身公司聘用兼職教練合同書
- 二零二五年度勞務(wù)派遣公司勞動合同范本(含合同解除與賠償)
- 四川省2025年度房屋租賃租賃合同解除與終止合同
- 二零二五年度消費金融貸款連帶保證合同書
- 農(nóng)村基礎(chǔ)設(shè)施共建與運營維護協(xié)議
- 家庭急救知識(異物卡喉的急救)共45張課件
- 機臺異常處理規(guī)定
- 旅游地產(chǎn)開發(fā)模式和創(chuàng)新(含案例)
- 診斷學(xué)完整教案(共167頁)
- 《汽車文化》全套教案
- 拆除工程檢驗批質(zhì)量檢驗記錄
- 甲狀腺腫瘤PPT課件
- 城市燃氣工程監(jiān)理實施細則
- 項目總工崗位職責
- 鋁合金和工藝課件:硬質(zhì)陽極氧化處理
- (完整版)部編四年級語文下詞語表
評論
0/150
提交評論