付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
4VBAVBAVBAVBA數(shù)VBA編程打下基VBAExcel中使VBA編程,可以開發(fā)出許多有價值的應用程序。作為初學者,首先需要了解什么是VBA,以及用VBA能做什么。VBAVisualBasicforApplication的縮寫,是一種應用程序自動化語言。所謂應用程序自動化,是指通過編寫程序讓常規(guī)應用程序(Excel、Word等)自動完成工作,如在Excel里自動設置單元格的格式、多張工作表之間的自動計算等。VBA是微軟應用程序開發(fā)語言——VB的子集。所以如果有VB程序設計的經(jīng)驗,學VBA根據(jù)其嵌入軟件的不同,增加了對相應軟件中對象的控制功能。例如Excel的ExcelVBAExcelExcelExcel的自動化水平??梢杂煤芏痰臅r間在Excel環(huán)境中開發(fā)出一套完整的管理信息系統(tǒng)。Excel中使用VBA當使用Excel為,利用Excel現(xiàn)有的功能(如文件管理、函數(shù)等),可以減少件給用戶即可完成文件的發(fā)布。VBAExcelVBAExcel應用程序都由一個工程表示,每個工程包含當前工作簿VBA代碼,本節(jié)介紹VBA代碼最基礎的內(nèi)容。在本書第2章中錄制的宏都是由VBA代碼構(gòu)成的,進入VBE環(huán)境可以看到錄制的宏代碼。在Excel中錄制的宏都是以VBA代碼表示,所有的宏都是以Sub開始,以關鍵詞EndSub結(jié)束。其結(jié)構(gòu)如下:'說明VBAVBA在Sub之后是宏的名稱,宏名稱后是一對括號。在Sub和EndSub之間是每次Sub設置表頭格式()'快捷鍵:Ctrl+tActiveWindow.WindowState=Sub設置表頭格式()'快捷鍵:Ctrl+tActiveWindow.WindowState=xlNormalWithSelection.HorizontalAlignment=.VerticalAlignment=.WrapText=.Orientation=.AddIndent=.IndentLevel=.ShrinkToFit=.ReadingOrder=.MergeCells=FalseEndWithWith.Name.Name宋體.Size=.Strikethrough=.Superscript=.Subscript=.OutlineFont=.Shadow=.Underline=.ColorIndex=.TintAndShade=.ThemeFont=xlThemeFontNoneEndWithSelection.Font.Bold=TrueActiveWindow.WindowState=xlNormalEnd有一些固定的單詞(稱為關鍵字)經(jīng)常出現(xiàn),例如,Selection、With幾乎每行代碼中都包括句點,用來連接VBA語言中不同的要素。例如,VBA中具有特殊含義的字符,如+、–、*、/、>、<、=和各種標點綜上所述,在VBA代碼中可使用各種常見的符號。VBA中具有特殊意義的保留字或符號。這些關鍵字具多種類型。常用的關鍵字如表4-1所示。4-1VBA提示:VBA中,對關鍵字不區(qū)分大小寫,無論用戶是按大寫、小寫或大小寫混合的Enter鍵后,VBE將自動將關鍵字轉(zhuǎn)換為VBA程序中,為了區(qū)分過程、常數(shù)、變量、對象等,需要為這些過程、常數(shù)、變不能在標識符中使用空格、句點(.)、感嘆號(!)或@、&、$,#整型整型數(shù)據(jù)為16位(2個字節(jié))的數(shù)值形式,其范圍為–32768~32767之間。整型DimDimn1AsIntegerDimn%長整型長整型數(shù)據(jù)為32位(4個字節(jié))有符號的數(shù)值形式,其范圍從 。Long的類型字符為和號(&)單精度浮點型的范圍在負數(shù)的時候是從–3.402823E38~–1.401298E-45,而在正數(shù)的時候是從1.401298E-45~3.402823E38。單精度浮點型的類型字符為感嘆號(!)雙精度浮點型貨幣型為64位(8個)10000154位數(shù)字。這種表示法的范圍可以從–9223372654775808~22337208477.5807。貨幣型為at符()。字節(jié)型字符串"Microsfot"MicrosfotVisualBasic""歡迎使用VBA"Dimstr1AsStringDimDimstr1AsStringDimstr2AsString*10定義后將一直占用10個字符位置。型型數(shù)據(jù)很簡單,只有兩個值(True或False。該類型適合簡單的二元信息例如,真/假、是/為True或Fals為16位(2轉(zhuǎn)換Boolean值為其他的數(shù)據(jù)類型時,F(xiàn)alse成為0,而True成為–1。日期型11999912310:00:0023:59:59#1Jan93#日期型變量會根據(jù)計算機中的短日期格式來顯示。時間則根據(jù)計算機的時間格式值則表示時間。午夜為00.5。負整數(shù)表示18991230日之前的日期。對象型VBA是面向?qū)ο蟮某绦蛟O計語言,用戶可在程序中各種對象,例如,Excel的工作表、單元格等。這些對象有自己特定的對象名,這里所說的對象型可任何對象。必須使用Set語句給對象變量賦值,對象變量使用結(jié)束后,應為其賦值為Nothing。如:DimMyObjectAsSetMyObject=Worksheets("sheet1")SetMyObject=Nothing
'賦值對 變體型變體型是VBA中的一種特殊數(shù)據(jù)類型,所有沒有被數(shù)據(jù)類型的變量都默認為變體型。變體型數(shù)據(jù)是所有沒被顯式(用如Dim、Private、Public或Static等語句——變量的將在本章后面進行介紹為其他類型變量的數(shù)據(jù)類型。變體型沒有類型字符。String數(shù)據(jù)及用戶定義類型外,可以包含任何種類的數(shù)據(jù)。Variant也可以包含EmptyErrorNothingNull等特殊值??蒝arType函數(shù)或TypeName函數(shù)來決定如何處理變體型中的數(shù)據(jù)。As數(shù)據(jù)類型AsEndTypeTypeProductNameAsStringtyAsIntegerPriceAsCurrencyOrderAsIntegerEnd便地處理Excel工作表中的數(shù)據(jù)。使用Type語句了一個用戶自定義類型后,就可以在該范圍內(nèi)的任何位置聲注意:自定義數(shù)據(jù)類型的定義必須放在模塊(模塊和類模塊)的部分。在使用記錄Type語句進行定義。一般情況下,記錄類型在模塊中定義,其變量可以出現(xiàn)在VBA工程的任何地方。4-1所示的工作表中每行數(shù)據(jù)產(chǎn)品名稱、庫存量、單價、訂購量等數(shù)據(jù)。在VBA程序中為了方便地處理這些數(shù)據(jù),可自定義數(shù)據(jù)類型Product,然后在程序中使用4-1TypeTypeProductNameAsString tyAsInteger PriceAs OrderAsInteger EndTypeSubDimp1AsWithWorksheets("商品")p1.ProductNameCells(32)p1.Price=.Cells(3,6) ty=.Cells(3,7)p1.Order=.Cells(3,8)EndEnd4-2xlHAlign 值 –7–51–––PublicPublic|PrivateEnum類型名稱成員[=常數(shù)表達式]常數(shù)表達式EndPublicPublicEnumEnd1,“六年級”表示常數(shù)6。PublicPublicEnum一年級EndGrade枚舉類型后,即可在代碼窗口中使用該類型,在定義為變量時將Grade4-2所示。給枚舉類型變量賦值時,在代碼窗口中將自動列出枚舉類型的成員,如圖4-3所示。圖4-2定義枚舉變 圖4-3使用枚舉 3.14、255等僅表示它自身取值的數(shù)據(jù)叫常數(shù)。常數(shù)的值在程序執(zhí)行之前就已經(jīng)確定,執(zhí)行VBA程序中可以直接使用的量。根據(jù)表示的數(shù)據(jù)類型不同,直接常時間常數(shù)和常數(shù)等多種類型。 "ExcelVBA從入門到精通 注意:字符串常數(shù)必須引號括起來,否則 會將其認為是一個變量名體的意義。例如,#8/8/2008#是正確的,而#4/31/2008#是錯誤的,因為4月沒有31日。輸入日期時,VBE自動將其兩個“#VBE的代碼中輸入以下內(nèi)容VBE都會自動將其按“月/日/年”的格式轉(zhuǎn)換為正確的表示形式,顯示如 Windows操作系統(tǒng)中的設置相關。例如,#8/13/08#可能表示2008813日。
4-4 有確定的值。VBA中可使用Const關鍵字定義符號常數(shù),其語法格式如下:Const常數(shù)標識符As數(shù)據(jù)類型=符號常數(shù)表達 其中,Const為定義符號常數(shù)的關鍵字,符號常數(shù)表達式計算出來的值保存在常數(shù)名中,如果在常數(shù)時沒有顯式地使用Astype子句,則該常數(shù)的數(shù)據(jù)類型是最適合其表ConstConstMAXCOL=ConstMyIntAsInteger=ConstBOOKNAMEExcelVBA從入門到精通ConstBOOK= Office"+BOOKNAME 以上代碼使用前面定義的 BOOKExcel中的各對象,ExcelVBA預定義了許多常數(shù),這些常數(shù)稱為系統(tǒng)常數(shù)。提供對象庫的其他應用程序(Access、Excel、ProjectWord等)也提供常數(shù)列表,VBA中,系統(tǒng)常數(shù)名采用大小寫混合的格式,其前綴表示定義常數(shù)的對象庫名。Excel中的系統(tǒng)常數(shù)名通常都是以小寫的xl(xlWindowType的成員包括xlWorkbook等幾個)作為前綴,而VB中的系統(tǒng)常數(shù)名通常都是以小寫的vb作為前綴。提供了很多Msgbox常數(shù),用vbOKOnly表示框只有【確定】按鈕,比用數(shù)值0更直“常數(shù)”的所有幫助條目,如圖4-5所示。在查找到的信息中單擊【VisualBasic常數(shù)】按鈕,可顯示VBA常數(shù)的分類,如圖4-6左圖所示。單擊分類【Color常數(shù)】按鈕即可查看具體的常數(shù),如圖4-6右圖4-54-6常數(shù),單擊【搜索】按鈕,將顯示Msgbox的相關常數(shù),如圖4-7所示。4-7 變量就是事先將變量名及其類型在使用之前通知VBA,由VBA按照變量的數(shù)據(jù)類型分配空間??墒褂肈im、Static、Private或Public關鍵字來變量。最常用的是使用Dim變量,其語法格式如下:Dim變量名[As數(shù)據(jù)類型 Dim和As為變量的關鍵字數(shù)據(jù)類型為前面介紹的類型關鍵字,例如,String、Date型包含進來。在下面的語句中,變量intX、intY與intZ被為Integer類型。DimintXAsInteger,intYAsInteger,intZAs 用隱式變量時,VBAVariant類型。在為其指定值之前,其值Empty;當為它賦值后,會采用所賦值的類型作為變量的類型。Option VBA應用程序中,將使用很多的變量,有些變量可在整個應用程序中使用,而另值自動。這類變量用Dim關鍵字進行定義。ExcelVBA的某個模塊頂端定義的變量,在該模塊的各過程中都可模塊級別變量。這類變量在模塊的開始部分使用Dim或Private關鍵字進行定義。用的變量。這類變量在模塊的開始部分用Public關鍵字進行定義。在過程中使用Static關鍵字的變量稱為靜態(tài)變量,這類變量在整個應用程序中有碼創(chuàng)建了變量strName并且指定為String數(shù)據(jù)類型。DimstrNameAs Dims1AsStrings1測試局部變量"MsgBoxs1EndEndSub上面的代碼定義了兩個過程“過程1”和“過程2”,其中“過程1”中定義了一個局部s1MsgBox4-82”中直接使用MsgBox顯示s1中的值,因為該過程中并未定義變量s1的值,所以顯示框中無任何信息,如圖4-8右圖所示。4-8程。在模塊級別中使用Dim語句與使用Private語句是相同的。不過使用Private語句可以更容易地和解釋代碼。使用兩個語句變量的語法格式完全相同。在模塊的【】部分,輸入變量的代碼,如圖4-9所示PrivatestrNameAs 圖4-9模塊變SubSub測試模塊變量()strName=" MsgBox軟件設計:&strNameEndSubSub顯示模塊變量的值End注意:模塊變量的初始化操作必須在過程中進行,不能在模塊【】部分進行strNameMsgBoxstrName的值。接著運行過程“顯示模塊變量的值”,在該過程中未對模塊strNamestrName為模塊變量,在“測試模塊變量”過程中已經(jīng)賦值,所如果首先運行過程“顯示模塊變量的值”,MsgBox框?qū)⒉粫@示任何值使用Public語句公共模塊級別變量。全局變量可用于工程中的任何過程。如果全局變量是于標準模塊或是類模塊中,則它也可以被任何到此全局變量所屬工程的注意:一般情況下,要盡量少使用全局變量。過多地使用全局變量,可能會。在VBE中雙擊模塊“變量作用域”,在模塊的部分使用以下代碼全局PublicstrAppNameAs SubSub初始化全局變量strAppNameExcel測試應用程序"MsgBoxstrAppNameEndSub顯示全局變量的值()Sub顯示全局變量的值()End圖4- 全局變 圖4-11在其他模塊中全局變靜態(tài)變量的方法是,在過程內(nèi)部用Static關鍵字一個或多個變量,其用法Dim語句完全一樣,例如StaticintCountAs SubSub靜態(tài)變量測試Dimi1AsIntegerStatici2AsIntegeri1=i1+1i2=i2+MsgBox局部變量的值:&i1&vbNewLine&_"靜態(tài)變量的值:"&i2,vbOKOnlyEndSub測試Fori=1To5EndSub4-12左圖所示的結(jié)果,由圖可看出局部變量和靜態(tài)變量的值都為1。單擊【確定】按鈕將再次顯示類似的框,單擊多次【確定】4-12在“靜態(tài)變量測試”過程中將變量i1為局部變量,該過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年內(nèi)蒙古自治區(qū)赤峰市紅山區(qū)高一上學期期末統(tǒng)考歷史試題(解析版)
- 2024-2025學年山東省東營市高一下學期期末質(zhì)量監(jiān)控歷史試題(解析版)
- 2026年數(shù)據(jù)結(jié)構(gòu)與算法實現(xiàn)模擬試題庫
- 2026年旅游管理專業(yè)測試題目旅游規(guī)劃與目的地營銷
- 2026年13敘述文學基礎題目選粹與解答
- 2026年音樂基礎理論樂理和聲與作曲知識問答
- 2026年物流管理與供應鏈優(yōu)化初級練習題
- 2026年生物醫(yī)學專業(yè)資料分析模擬試題集
- 2026年審計專業(yè)碩士研究生入學考試預測模擬題及答案解析
- 2026年國際貿(mào)易從業(yè)人員誠信經(jīng)營與合規(guī)測試題
- 美國變壓器市場深度報告
- 建設工程第三方質(zhì)量安全巡查標準
- 乳化液處理操作規(guī)程
- 飯店轉(zhuǎn)讓協(xié)議合同
- 營建的文明:中國傳統(tǒng)文化與傳統(tǒng)建筑(修訂版)
- 用流程復制培訓課件
- 液化天然氣氣化站安全檢查表
- 2023年白銀有色集團招聘筆試題庫及答案解析
- GB/T 32022-2015貴金屬覆蓋層飾品
- GB/T 26253-2010塑料薄膜和薄片水蒸氣透過率的測定紅外檢測器法
- GB/T 1185-2006光學零件表面疵病
評論
0/150
提交評論