




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
VBA基礎(jīchǔ)(31-Oct-21)第一頁,共108頁。數組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(jīchǔ)VBA概念VBA概念第二頁,共108頁。1-1VBA簡介(jiǎnjiè)VBA(VisualBasicforApplication)是MicrosoftOffice系列軟件的內置編程語言,其語法結構與VisualBasic編程語言互相兼容,采用的是面向對象的編程機制(jīzhì)和可視化的編程環(huán)境。第三頁,共108頁。1-2面向對象程序設計(chénɡxùshèjì)的基本概念1.集合和對象VBA中的應用程序是由許多對象組成的,如表、窗體、查詢等。對象是幫助構造應用程序的元素,以特定的方式組織這些(zhèxiē)對象,就形成了應用程序。2.對象的屬性、事件和方法屬性屬性描述了對象的自身(zìshēn)性質其格式為:對象名.屬性=屬性值第四頁,共108頁。1-2面向對象程序設計(chénɡxùshèjì)的基本概念事件事件是指可以發(fā)生在一個(yīɡè)對象上且能夠被該對象所識別的動作。如:單擊某個命令按鈕就產生該按鈕的“單擊”事件當某個對象發(fā)生某一事件后,就會驅動系統(tǒng)去執(zhí)行預先編好的、與這一事件相對應的一段程序。方法方法是系統(tǒng)事先設計好的,可以完成一定操作的特殊過程,是附屬(fùshǔ)于對象的行為和動作。在需要使用的時候可以直接調用。其格式為: 對象名.方法名第五頁,共108頁。常見(chánɡjiàn)對象及其含義對象名含義Application代表整個Excel應用程序Window代表窗口Worksheet代表一個工作表Sheets指定的或活動工作薄中所有工作表的集合ShapeRange代表形狀區(qū)域,它是文檔中的一組形狀PivotTable代表工作表上的數據透視圖Workbook代表一個Excel工作薄Shape代表繪圖層中的對象,例如自選圖形Range代表某一單元格、某一行、某一列、某一區(qū)域Name代表單元格區(qū)域的自定義名Chart代表工作薄中的圖表FileDialog提示文件對話框,功能和應用程序中標準“打開”和“保存”對話框類似CommandBarPopup代表命令欄上的一個彈出式控件CommandBar代表容器應用程序中的一個命令欄第六頁,共108頁。1-3VBA編程環(huán)境(huánjìng)VBA中的程序與函數共有4種:一般程序(Sub)、事件(shìjiàn)程序(Event)、屬性程序(Property)和函數(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)插入按鈕:插入模塊或過程運行子過程/用戶窗體按鈕:運行模塊中的程序中斷按鈕:中斷正在運行的程序重新設置按鈕:結束正在運行的程序設置模式按鈕:在設計模式和非設計模式之間切換工程資源管理器按鈕:用于打開工程資源管理器屬性窗口(chuāngkǒu)按鈕:用于打開屬性窗口(chuāngkǒu)對象瀏覽器按鈕:用于打開對象瀏覽器Microsoft
Excel插入(chārù)模塊運行子過程/用戶窗體設計模式中斷重新設計工程資源管理器對象瀏覽器屬性窗口第九頁,共108頁。新建一個窗體并添加兩個命令(mìnglìng)按鈕,運行窗體后,單擊第一個按鈕,顯示一個消息框;單擊第二個按鈕,退出當前窗體通過此例,體會可視化編程、面向對象、事件(shìjiàn)過程、應用方法等基本概念。第十頁,共108頁。數組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(jīchǔ)VBA概念VBA編程基礎第十一頁,共108頁。2-1常量(chángliàng)、變量VBA使用常量(chángliàng)、變量來存儲值。用來保存在程序運行期間數據。常量(chángliàng):在程序運行中其存儲的值不會改變。變量:在程序運行中其值可以改變。第十二頁,共108頁。2-1-1常量(chángliàng)在程序運行過程中,其值不會被改變的量稱為常量。在VBA中有三類(sānlèi)常量:1.直接常量如:10,20%,123.0,“AB”,“VBA程序設計”等2.符號常量3.系統(tǒng)常量指VBA系統(tǒng)預先定義好的,用戶可以直接引用的量。如:acForm,acQuery,vbOk,vbRed第十三頁,共108頁。符號(fúhào)常量在程序中,某個常量多次被使用,則可以使用一個符號來代替該常量,這樣不僅在書寫上方便,而且有效地改進(gǎijìn)了程序的可讀性和可維護性。VBA中使用關鍵字Const聲明符號常量。其格式如下:Const常量名[類型符號]=常數表達式如:ConstPI#=3.1415926第十四頁,共108頁。2-1-2變量(biànliàng)變量(biànliàng)是內存中的臨時單元,存放在程序執(zhí)行過程中產生的中間結果和最后輸出結果。在程序中使用變量(biànliàng),就要給變量(biànliàng)定義名稱及類型,即對變量(biànliàng)進行聲明。第十五頁,共108頁。變量(biànliàng)命名規(guī)則1.變量名必須以字母或漢字開頭,后可跟字母、漢字、數字或下劃線組成(不能含有(hányǒu)小數點和空格),長度不超過255個字符的字符串;2.不能使用VBA中的關鍵字;3.VBA中不區(qū)分變量名的大小寫;4.變量名的最后一個字符可以是%、&、!、#、$等表示數據類型的聲明符。說明:常量名的命名規(guī)則與變量名的命名規(guī)則相同第十六頁,共108頁。2-2數據類型與變量(biànliàng)的聲明在VBA中,數據類型用來決定變量可以保存何種數據。VBA支持多種數據類型,為用戶編程提供(tígōng)了方便。第十七頁,共108頁。2-2-1VBA的數據類型數據類型類型聲明符存儲空間取值范圍整型(Integer)%2-32768~32767長整型(Long)&4-2147483648~2147483647單精度浮點型(Single)!4負數:-3.402823E38~-1.401298E-45正數:1.401298E-45~3.402823E38雙精度浮點型(Double)#8負數:-1.79769313486232E308~-4.94065645841247E-324正數: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類型”子句是可選的。如果使用該子句,就可以定義變量的數據類型。未使用,默認變量的類型為變體型(Variant)。例如:DimiAsinteger,s表示(biǎoshì)聲明了一個名為i的整型變量和一個名為s的變體型變量。第十九頁,共108頁。關鍵字Dim或Static的區(qū)別(qūbié)Dim聲明:隨過程的調用而分配存貯單元(dānyuán),每次調用都對變量初始化;過程體結束,變量的內容自動消失,存儲單元(dānyuán)釋放。Static聲明:Static聲明的變量,也稱為靜態(tài)變量。靜態(tài)變量在程序運行過程中一直保留其值,即每次調用過程,變量保持原來的值。第二十頁,共108頁。數據類型的轉換(zhuǎnhuàn)函數列表函數返回類型CByteByteCBoolBooleanCIntIntegerCLngLong(長整型)CSngSingle(單精度浮點型)CDblDouble(雙精度浮點型)CCurCurrency(變比整數)CDecDecimalCDateDateCStrStringCvarVariant第二十一頁,共108頁。識別(shíbié)數據類型的函數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良好的編程習慣應該是“先聲明變量,后使用(shǐyòng)變量”,這樣做可以提高程序的效率,同時也使程序易于調試。VBA中可以強制顯式聲明,可以在窗體模塊、標準模塊和類模塊的通用聲明段中加入語句:OptionExplicit第二十四頁,共108頁。變量(biànliàng)的初始化聲明(shēngmíng)而未賦值的變量的值為:數值型變量初始化為0;字符型變量為零長度字符串;變體型變量初始化為Empty;第二十五頁,共108頁。2-3-1算術(suànshù)運算符第二十六頁,共108頁。2-3-2連接(liánjiē)運算符連接(liánjiē)運算符:&、+(字符串連接(liánjiē))例如:"123"+"456"結果"123456""123"&"456"結果"123456"使用上&與+的區(qū)別:例如:"abcdef"&12345結果為"abcdef12345" "123"&456結果為"123456" "abcdef"+12345結果為出錯"123"+456結果為579
第二十七頁,共108頁。2-3-3關系(guānxì)運算符將兩個操作數進行大小比較,結果(jiēguǒ)為邏輯值。注意:字符串比較,則按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止。第二十八頁,共108頁。2-3-4邏輯(luójí)運算符將操作數進行(jìnxíng)邏輯運算,結果是邏輯值第二十九頁,共108頁。舉例(jǔlì)例1:用人單位招聘秘書:年齡小于40歲的女性,學歷(xuélì)??苹虮究普_(zhèngquè)的VBA表達式:3〈=xAndx<=7錯誤的VBA表達式:3<=x<=7或3<=xOrx<=7
年齡<40,性別=“女”,(學歷=“??啤保瑢W歷=“本科”)
AndAndOr例2:算術表達式:第三十頁,共108頁。2-3-5簡單(jiǎndān)的字符處理函數作用關鍵字OptionCompare設置字符串比較規(guī)則StrComp比較兩個字符串StrConv字符串類型轉換Lcase、Ucase大小寫變換Space、String重復字符串Len計算字符串長度Format設置字符格式Lset、Rset重排字符串InStr、Left、Ltrim、Mid、RightRtrim、Trim處理字符串Split、Join拆分與連接字符串第三十一頁,共108頁。OptionCompare設置(shèzhì)字符串比較規(guī)則OptionCompare{Binary|Text|Database}OptionCompareBinary:是根據字符的內部二進制表示導出的一種排序(páixù)A-Z<a-z<漢字OptionCompareText:是根據系統(tǒng)區(qū)域確定的一種不區(qū)分大小寫的一種排序(páixù)(A=a)<(B=b)<(Z=z)結果(jiēguǒ):True結果:False第三十二頁,共108頁。StrComp比較(bǐjiào)兩個字符串第三十三頁,共108頁。StrConv字符串類型轉換常量說明vbUpperCase將字符串文字轉成大寫vbLowerCase將字符串文字轉成小寫vbProperCase將字符串中每個字的開頭字母轉成大寫vbWide將字符串中單字節(jié)字符轉成雙字節(jié)字符vbNarro將字符串中雙字節(jié)字符轉成單字節(jié)字符vbKatakana將字符串中平假名字符轉成片假名字符vbHiragana將字符串中片假名字符轉成平假名字符vbUnicode根據系統(tǒng)的默認碼頁將字符串轉成UnicodevbFromUnicode將字符串由Unicode轉成系統(tǒng)的默認碼頁第三十四頁,共108頁。StrConv字符串類型轉換(例)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ǎnhuàn)Sub大小寫轉換(zhuǎnhuàn)()MsgBoxLCase("HELLOWORLD")&Chr(10)&UCase("helloworld")EndSub第三十七頁,共108頁。String/Space重復(chóngfù)字符Sub重復(chóngfù)字符()MsgBoxString(5,"$")&Space(3)&String(5,"*")EndSub第三十八頁,共108頁。Lset/Rset字符串往左/右對齊(duìqí)Sub字符左右對齊(duìqí)()Dimstr1,str2AsStringstr1="大連華信計算機技術股份有限公司"LSetstr1="華信培訓"str2="大連華信計算機技術股份有限公司"RSetstr2="華信培訓"MsgBox"["&str1&"]"&Chr(10)&"["&str2&"]"EndSub第三十九頁,共108頁。Instr返回字符(zìfú)出現(xiàn)位置Sub查找位置(wèizhi)()MsgBoxInStr("大連華信計算機技術股份有限公司","信")EndSub第四十頁,共108頁。Left/Mid/Right從左、中、右取值Sub取值()DimstrAsStringstr="大連華信計算機技術股份(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ōɡè)字符'#任何一個數字(0-9)Dimstr1AsStringstr1="abda"Ifstr1Like"*"ThenMsgBox"*相似"Ifstr1Like"a???"ThenMsgBox"?相似"If1234Like"####"ThenMsgBox"#相似"EndSub第四十三頁,共108頁。2-4表達式組成由變量、常量、函數(hánshù)等運算對象加上運算符、圓括號組成的式子。書寫規(guī)則(1)運算符不能相鄰。例a+-b是錯誤的。(2)乘號不能省略。例x乘以y應寫成:x*y。(3)括號必須成對出現(xiàn),均使用圓括號。(4)表達式從左到右在同一基準上書寫,無高低。運算優(yōu)先級算術運算符>連接運算符>關系運算符>邏輯運算第四十四頁,共108頁。2-5常用(chánɡyònɡ)函數函數實際上是系統(tǒng)事先定義好的內部程序,用來(yònɡlái)完成特定的功能。VBA提供了大量的內部函數,供用戶在編程時使用。函數的調用形式為:函數名(參數表)常用內部函數 常用內部函數,在立即窗口練習,體會函數的功能。[請參照:VBA函數參考手冊]第四十五頁,共108頁。2-6模塊(mókuài)、函數和過程模塊是自定義的過程、函數保存的地方(dìfāng),也是錄制的宏保存的場所。有兩種基本類型的模塊:類模塊和標準模塊。模塊可以通過右鍵單擊工程資源管理器的工程名,選擇“插入-模塊”來新建。新建的模塊缺省的名稱為“模塊1”,“模塊2”,建議在屬性窗口內更改為有意義的名稱。模塊任務:(1)保存(bǎocún)過程和函數;(2)定義模塊內的私有變量或整個工程的公有變量。第四十六頁,共108頁。2-7過程(guòchéng)過程是最基本的運行單位語法(yǔfǎ)[Private|Public|Friend][Static]Subname[(arglist)]
[statements]
[ExitSub]
[statements]EndSub在以上程序中,Sub代表過程種類,表示運行指定的操作,但不返回運行結果;第四十七頁,共108頁。部分(bùfen) 描述Public可選的。表示所有模塊的所有其它過程都可訪問這個Sub過程。如果在包含OptionPrivate的模塊中使用,則這個過程在該工程外是不可使用的。Private可選的。表示只有在包含其聲明的模塊中的其它過程可以訪問該Sub過程。Friend可選的。只能在類模塊中使用。表示該Sub過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。Static可選的。表示在調用之間保留Sub過程的局部變量的值。Static屬性對在Sub外聲明的變量不會產生影響,即使過程中也使用了這些變量。name必需的。Sub的名稱;遵循標準的變量命名約定。arglist可選的。代表在調用時要傳遞給Sub過程的參數的變量列表。多個變量則用逗號隔開。statements可選的。Sub過程中所執(zhí)行的任何語句組。第四十八頁,共108頁。2-8函數(hánshù)函數是具有(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可選的。表示在調用之間將保留Function過程的局部變量值。Static屬性對在該Function外聲明的變量不會產生影響,即使過程中也使用了這些變量。name必需的。Function的名稱;遵循標準的變量命名約定。arglist可選的。代表在調用時要傳遞給Function過程的參數變量列表。多個變量應用逗號隔開。type可選的。Function過程的返回值的數據類型,可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定長)、Object、Variant或任何用戶定義類型。statements可選的。在Function過程中執(zhí)行的任何語句組。expression可選的。Function的返回值。第五十頁,共108頁。函數和過程(guòchéng)區(qū)別調用一個過程(Sub)時,必須鍵入過程名稱以及任何需要的參數值。Call語句可有可無,如果使用它,則參數必須以括號括起來。調用函數(Function)時,為了使用函數的返回值,必須指定函數給變量,并且(bìngqiě)用括號將參數封閉起來。第五十一頁,共108頁。數組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(jīchǔ)VBA概念VBA常用語句第五十二頁,共108頁。3-1VBA語句(yǔjù)書寫規(guī)則VBA代碼不區(qū)分字母的大小寫系統(tǒng)保留字自動轉換每個單詞的首字母大寫;語句書寫自由一行(yīxíng)可書寫幾句語句,之間用冒號(:)分隔;一句語句可分若干行書寫,用續(xù)行符(_)將語句分開。第五十三頁,共108頁。3-2VBA常用(chánɡyònɡ)語句賦值語句:給變量、常量或對象的屬性指定一個值或表達式。格式:變量名=表達式作用:將表達式的值賦值給變量名。一般用于給變量賦值或對控件設定屬性值。例如:s=10Text1.Text="歡迎使用VBA"注意:雖然賦值號與關系運算符等于號都用“=”表示,VBA會根據(gēnjù)所處的位置自動判斷是何種意義的符號第五十四頁,共108頁。聲明語句:命名和定義常量、變量、數組以及過程(guòchéng)。注釋語句在程序中的適當位置加上注釋語句有利于程序的維護和閱讀。格式:Rem注釋內容 或用單引號’注釋內容第五十五頁,共108頁。數組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(jīchǔ)VBA概念VBA程序流程控制第五十六頁,共108頁。順序、分支(fēnzhī)、循環(huán)結構(jiégòu)化程序設計由順序、分支、循環(huán)這3種基本結構(jiégòu)所組成。語句組2語句組1TF語句組2條件語句組1FT條件語句組TF條件語句組第五十七頁,共108頁。4-1分支(fēnzhī)結構單行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根據輸入x的值,觀察y的輸出(shūchū)結果單行If語句(yǔjù)舉例第五十九頁,共108頁。
多行If語句(yǔjù)語句組可以由一條(yītiáo)或多條語句組成,語句組不能與Then書寫在同一行,否則VBA認為是一個單行If語句,會導致Else沒有匹配的If。語句“EndIf”是多行If語句的結束標志。在多行If語句中,即使省略Else子句,也要寫該結束標志。省略Else子句時的多行If語句形式為:If表達式Then語句組 EndIf第六十頁,共108頁。例:計算分段(fēnduàn)函數單行(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ǐ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ī)結構)第六十四頁,共108頁。說明(shuōmíng)不管有幾個分支,依次判斷,當某條件滿足,執(zhí)行相應(xiāngyīng)的語句,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。ElseIf不能寫成ElseIf。第六十五頁,共108頁。例:已知百分制成績mark,顯示對應的五級制成績下列三種方法(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關系運算符表達式 Is<60語句(yǔjù)格式: SelectCase變量或表達式 Case表達式列表1 語句(yǔjù)塊1 Case表達式列表2 語句(yǔjù)塊2 … [CaseElse 語句(yǔjù)塊n+1] EndSelect數值(shùzí)型或字符串表達式SelectCase語句(情況語句)第六十七頁,共108頁。程序(chéngxù)流程圖語句塊n+1語句塊1語句塊2語句塊n條件2TF…...條件nTF條件1TF第六十八頁,共108頁。變量strC中存放一個字符,判斷(pànduàn)該字符類型第六十九頁,共108頁。例如:在輸入成績文本框中輸入一個分數,單擊“判斷(pànduàn)”命令按鈕后,在成績等級文本框中顯示對應的成績等級。輸入的成績在90~100分為A,80~89分為B,70~79分為C,60~69分為D,0~59分為E,否則顯示出錯信息。注意:根據題意,當輸入的成績不在[0,100]內時,應顯示出錯信息,在該范圍內時,應進行分等級。判斷是否(shìfǒu)為合法成績可用If語句,而分等級最好使用SelectCase語句。第七十頁,共108頁。條件(tiáojiàn)函數IIf函數形式為:IIf(表達式,當表達式為True時的值,當表達式為False時的值)例如:求x,y中大(zhōnɡdà)的數,放入max變量中。 max=IIf(x>y,x,y)第七十一頁,共108頁。循環(huán)(xúnhuán)結構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)結構:將一段程序重復(chóngfù)執(zhí)行指定的次數,其中使用一個計數變量,統(tǒng)計執(zhí)行的次數。格式:For循環(huán)變量=初值to終值[Step步長]語句塊 [ExitFor] 語句塊Next[循環(huán)變量]循環(huán)體第七十三頁,共108頁。循環(huán)變量得初值循環(huán)變量<=終值ExitFor語句塊循環(huán)變量加步長結束False語句塊True第七十四頁,共108頁。注意(zhùyì)功能:執(zhí)行For語句(yǔjù)時,“循環(huán)變量”設為“初值”;執(zhí)行到Next語句(yǔjù)時,步長加(減)到循環(huán)變量上;再執(zhí)行For語句時,若“循環(huán)變量”超過“終值”則循環(huán)結束。步長:未指定值時默認為1。若“步長”是正數或0,則“初值”應大于等于“終值”,否則,“初值”應小于等于“終值”。第七十五頁,共108頁。例:計算累加程序(chéngxù)S=1+2+3+4….+x,并輸出結果方法:接收一個累加的終值,確定一個循環(huán)變量,循環(huán)變量有2個作用(加數和循環(huán)變量),確定一個存儲(cúnchǔ)累加和的變量。使用循環(huán)計算,最后輸出顯示結果。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個作用(乘數和循環(huán)變量),確定一個存儲累乘積的變量。使用(shǐyòng)循環(huán)計算,最后輸出顯示結果。DimSAsinteger,iAsintegerx=InputBox("請輸入累加的終值")S=1Fori=lToxS=S*iNext注意:累乘的乘數和乘積變量的初值為1。第七十七頁,共108頁。注意:出了循環(huán),循環(huán)控制變量值的問題。例程序段:Fori=2To13Step3循環(huán)執(zhí)行(zhíxíng)次數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)結構)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必須有初值防止產生死循環(huán)有可能一次也不執(zhí)行循環(huán)體修改循環(huán)(xúnhuán)控制變量,改變加數值第八十三頁,共108頁。
Do…LoopWhilei=1Dos=s+ii=i+1LoopWhilei<=10當i<=10成立(chénglì)時,執(zhí)行循環(huán)體循環(huán)變量i必須有初值防止產生死循環(huán)至少執(zhí)行一次循環(huán)體修改循環(huán)控制變量,改變(gǎibiàn)加數值第八十四頁,共108頁。DoUntil…Loopi=1DoUntili>10s=s+ii=i+1Loop當i>10成立時,結束執(zhí)行循環(huán)(xúnhuán)體循環(huán)(xúnhuán)變量i必須有初值防止產生死循環(huán)(xúnhuán)有可能一次也不執(zhí)行循環(huán)(xúnhuán)體修改(xiūgǎi)循環(huán)控制變量,改變加數值第八十五頁,共108頁。Do…LoopUntili=1Dos=s+ii=i+1LoopUntili>10當i>10成立時,結束執(zhí)行循環(huán)體循環(huán)變量i必須有初值防止(fángzhǐ)產生死循環(huán)至少執(zhí)行一次循環(huán)體修改(xiūgǎi)循環(huán)控制變量,改變加數值第八十六頁,共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,共同的特點是重復執(zhí)行一個語句系列(循環(huán)(xúnhuán)體),不同點是控制重復次數的時機和方法不一樣。第八十八頁,共108頁。數組VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)語句VBA編程基礎(jīchǔ)VBA概念數組第八十九頁,共108頁。5-1數組的概念(gàiniàn)數組:數組不是一種數據類型,而是一組相同(xiānɡtónɡ)類型的變量的集合。可以像使用普通變量一樣使用數組中的每一個元素。使用數組的好處是用一個數組名代表邏輯上相關的一批數據,用下標表示該數組中的各個元素,可以提高處理數據的效率,縮短和簡化程序。第九十頁,共108頁。5-2數組的定義(dìngyì)數組不是一種數據類型,而是一組相同類型的變量的集合(jíhé),數組必須先聲明后使用。兩類數組:靜態(tài)(定長)數組、動態(tài)(可變長)數組1.一維數組定義一維數組的形式:Dim數組名([下界To]上界)[As類型]聲明了數組的名、維數、大小、類型第九十一頁,共108頁。說明(shuōmíng):數組名的命名規(guī)則與變量的命名相同。數組的元素個數:上界-下界+1。缺省<下界>為0,若希望下標從1開始,可在模塊的通用部分使用(shǐyòng)OptionBase語句將設為1。其使用(shǐyòng)格式是:OptionBase0|1'后面的參數只能取0或1例如:OptionBase1'將數組聲明中缺省<下界>下標設為1<下界>和<上界>不能使用(shǐyòng)變量,必須是常量,常量可以是直接常量、符號常量,一般是整型常量。第九十二頁,共108頁。例:Dimmark(1to100)AsInteger例:Dima(-1to3)AsInteger聲明(shēngmíng)一維數組a,包含了5個整型元素a(-1)、a(0)、a(1)、a(2)、a(3);如果省略As子句,則數組的類型為變體類型。數組中各元素在內存占一片連續(xù)的存儲空間,一維數組在內存中存放的順序是按下標(xiàbiāo)大小的順序。第九十三頁,共108頁。注意(zhùyì):在定義靜態(tài)數組時,每一維的元素個數必須是常數,不能是變量或表達式。如:錯誤的聲明,下標(xiàbiāo)是變量Dimx(n)或:n=Inputbox(“輸入n”)Dimx(n)AsSingle第九十四頁,共108頁。在數組聲明(shēngmíng)中的下標說明了數組的整體,即每維的大??;而在程序其他地方出現(xiàn)的下標表示數組中的一個元素。兩者寫法形式相同,但意義不同。例如:Dimx(10)AsInteger
x(10)=100
表示(biǎoshì)聲明了數組x,有11個數組元素對x(10)這個(zhège)數組元素賦值第九十五頁,共108頁。5-3
二維數組定義二維數組的形式:Dim數組名([下界1To]上界1,下界2To]上界2)As類型例如(lìrú):Dima(2,3)AsSingle二維數組在內存的存放順序是“先行后列”。數組a的各元素在內存中的存放順序是: 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)數組動態(tài)數組指在聲明數組時未給出數組的大小(省略括號中的下標),當要使用它時,隨時用ReDim語句重新指出數組大小。形式(xíngshì)如下: ReDim數組名(下標[,下標2…])[As類型]例:PrivateSubS1()Dimx()AsSingle …n=Inputbox(“輸入n”)ReDim
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國手寫板行業(yè)市場調研分析及投資戰(zhàn)略咨詢報告
- 2025-2030高檔服裝和鞋類行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 2025-2030食用動物用非治療性抗生素行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030非定線旅游行業(yè)市場深度調研及發(fā)展前景與投資機會研究報告
- 2025-2030防火窗行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030酒店和汽車旅館客房家具行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 2025-2030軟袋氯化鈉注射液行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030跑道中心線燈行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030草藥收割機行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 垃圾滲濾液處理工程報告表環(huán)評評估意見
- 魔幻泡泡秀七彩體驗館介紹
- 表面工程學第十二章-表面微細加工技術
- 《阿房宮賦》理解性默寫試題與答案
- 聚乙烯塑料袋檢驗記錄新
- 山東大學工程流體力學(杜廣生)課件第5章 粘性流體的一維流動
- 員工入職確認單
- 初三優(yōu)秀學生座談會通用課件通用PPT課件
- T∕CAGHP 065.2-2019 地質災害防治工程工程量清單計價規(guī)范(試行)
- 園林綠化工程施工組織機構方案
- 室內智能加濕器設計說明
- 發(fā)電機整體氣密試驗的要求
評論
0/150
提交評論