Visual Basic for Applications - 维基百科,自由的百科全书

文章推薦指數: 80 %
投票人數:10人

Visual Basic for Applications(VBA)是Visual Basic的一種巨集語言,主要能用來擴展Windows的應用程式功能,特別是Microsoft Office軟體。

也可說是一種應用程式視覺 ... VisualBasicforApplications 語言 監視 編輯 VisualBasicforApplications(VBA)是VisualBasic的一種巨集語言,主要能用來擴展Windows的應用程式功能,特別是MicrosoftOffice軟體。

也可說是一種應用程式視覺化的BasicScript。

1994年發行的Excel5.0版本中,即具備了VBA的巨集功能。

VisualBasicforApplications(VBA)編程範型Multi-paradigm編程語言實作者Microsoft面市時間1993年穩定版本7.1(MicrosoftOffice2013) 型態系統靜態/動態混合,強/弱混合作業系統MicrosoftWindows,MacOSX許可證專有EULA啟發語言QuickBASIC,VisualBasic 目次 1數據類型 1.1基本數據類型 1.2自定義的數據類型 1.3數組 2常量 3調用DLL 4控制結構 4.1if語句 4.2SelectCase語句 4.3Do...Loop語句 4.4For...Next語句 4.5ForEach…Next語句 4.6跳出本次循環的continue語句 4.7With語句 4.8OnError語句 4.9具有控制作用的函數 5其他語句 5.1註釋語句 5.2語句的連寫與續行 6過程與函數 7常用內置函數 8表達式 9參考文獻 10外部連結 數據類型編輯 基本數據類型編輯 即PrimaryTypeData,下述列表的括號內為字節數: Byte(1):無符號類型,取值範圍0-255 Boolean(2) Integer(2) Long(4) Single(4) Double(8) Currency(8) Decimal(14) Date(8) String Object(4) Variant(根據分配確定)自定義的數據類型編輯 相當於C語言的struct,例如: Type自定义类型名 元素名As类型 … [元素名As类型] EndType 數組編輯 OptionBase0'數組索引值從0開始 OptionBase1'數組索引值從1開始 DimMyArray(10)'聲明一個數組變量,10是最大的可用的數組索引值 MyArray(5)=101'給數組的元素賦值 DimData(10,5)'聲明一個二維數組變量 Data(1,1)="A001"'給數組元素賦值 DimcArr(-11To20,1To3)AsString'聲明一個數組,定義數組索引值的上下界 DimdArr()AsString'聲明動態數組 ReDimdArr(0To5,1To2)'改變動態數組的尺寸默認把原數據清除。

如果保留原來的數據,必須加上參數Preserve。

                                '使用Preserve參數時只能改變最後一維的大小 IfUBound(vTemp)=-1Then      '判斷數組變量vTemp是否為空數組 EndIf EraseMyArrar,Data'Erase語句清除數組元素,釋放變量佔用的空間 常量編輯 日期常量由符號「#」將字符括起來,如#2012-1-1#。

系統定義常量有3個:True、False和Null。

固有常量是編程時引用的對象庫定義的常量。

所有固有常量都可以在宏或VBA代碼中使用。

通常,固有常量通過前兩個字母來指明定義該常量。

來自VB庫的常量則以「vb」開頭。

來自Access的常量以「ac」開頭。

可以使用對象瀏覽器來查看所有對象庫中的固有常量列表。

可以自行定義常量。

如: GlobalConst符号常量名称=常量值 調用DLL編輯 例如: PrivateDeclareFunctiongetFrequencyLib"kernel32"_Alias"QueryPerformanceFrequency"(cyFrequencyAsCurrency)AsLong PrivateDeclareFunctiongetTickCountLib"kernel32"_Alias"QueryPerformanceCounter"(cyTickCountAsCurrency)AsLong 控制結構編輯 if語句編輯 if條件1then 語句1 elseif條件2then 語句2 elseif... ... else 語句n endif SelectCase語句編輯 SelectCase表達式 Case表達式列表1 語句1 Case表達式列表2 語句2 ... Case表達式列表n 語句n EndSelect 其中的表達式列表可以為: 表達式例:"A" 用逗號分隔的一組枚舉表達式例:2,4,6,8 表達式1To表達式2例:60To100 Is關係運算符表達式例:Is<60Do...Loop語句編輯 DoWhile或Until條件 語句塊1 ExitDo 語句塊2 Loop Do 語句塊1 ExitDo 語句塊2 LoopWhile或Until條件 For...Next語句編輯 For循環控制變量=初值To終值Step步長 語句塊‘ExitFor語句可以跳出循環體 Next ForEach…Next語句編輯 ForEach循環控制變量In集合變量 語句塊 ExitFor語句可以跳出循環體 Next循環控制變量 跳出本次循環的continue語句編輯 VBA沒有類似C語言的continue語句。

通常可如此寫程序: For循環控制變量=初值To終值Step步長 Do'用于模拟continue 語句塊 If条件ThenExitDo'用于模拟continue 語句塊 LoopWhileFalse'用于模拟continue Next With語句編輯 With對象引用 語句塊 EndWith OnError語句編輯 OnErrorGoto出錯處理語句的label'跳轉到出錯處理語句 或 OnErrorResumeNext'遇到錯誤,不管錯誤,繼續往下執行 具有控制作用的函數編輯 IIf(條件式,表達式1,表達式2) Switch(條件式1,表達式1,[條件式2,表達式2[,...,條件式n,表達式n]]) Choose(索引式,選項1[,選項2,...[,選項n]])'這是基於1的索引其他語句編輯 註釋語句編輯 使用REM或者單引號開始的行。

語句的連寫與續行編輯 如果一行包括多條語句,用冒號分割各個語句。

跨多行的語句,在行末用「空格加下劃線」表示續行。

過程與函數編輯 Sub過程名(參數表) 語句塊 ExitSub 語句塊 EndSub   Function函數名(參數表)AsType 語句塊 函數名=表達式 ExitFunction EndFunction 可以是Private、Public、Friend、Static等修飾。

調用函數/過程時,可以加括號或者不加括號。

如果調用表達式作為一行的一部分,那麼必須用參數,例如函數調用的返回值賦給變量。

調用過程時,可以使用/不使用call關鍵字。

使用call語句調用過程,如果無參數,則不加括號;如果有參數,必須加括號。

如果調用時用括號包住單個參數,則該參數強行按值傳遞。

需要特別注意,不用call不加括號的調用,形參與實參是傳值(passedbyvalue)而不是傳引用(passedbyreference),這會導致一些對象的方法調用失敗。

例如: DimcnAsADODB.Connection Setcn=CurrentProject.Connection DimrsAsNewADODB.Recordset rs.Open"SELECT*FROMmyTable",cn DimExcelAppAsNewExcel.Application DimExcelWstAsWorksheet SetExcelWst=ExcelApp.Workbooks.Add.Worksheets(1) ExcelWst.Range("A2").CopyFromRecordset(rs)'失败,无法执行该行 ExcelWst.Range("A2").CopyFromRecordsetrs'可成功执行该行 常用內置函數編輯 VBA的常用內置函數列表參見:[1](頁面存檔備份,存於網際網路檔案館) MsgBox InputBox 捨入函數:Fix向0取整,Int向下取整,Round四捨五入 Rnd返回0-1內的單精度隨機數 字符串函數: Filter:對字符串的一維數組的過濾 InStr([Start,],[,Compare])與InStrRev:查找子串 Len字符串長度 Join:連接一維數組中的所有子字符串 Left,Right,Mid截取子字符串 Space(數值)生成空格字符串 Ucase,Lcase大小寫轉換函數 Ltrim,Rtrim,Trim刪除首尾空格 Replace Split:分割一個字符串成為一維數組 StrComp:字符串比較 StrConv:字符串轉換 String(number,character):制定字符重複若干次 StrReverse 日期/時間有關函數: Year,Month,Day,WeekDay,Hour,Minute,Second截取日期時間分量 DateAdd日期/時間增量函數 DateDiff(,,[,W1][,W2])日期/時間的距離函數 DatePart(,[,w1][,w2])時間分割函數 DateSerial(,,)合成日期;DateValue(「字符串表達式」)返回日期; Date,Time,Now,Timer返回日期時間 DateValue TimeSerial:由時間序列得到時間對象 TimeValue:由時間字符串得到時間對象 Weekday:獲得日期的周幾 WeekdayName 轉換函數:CBool、CByte、CCur、CDate、CDbl、CDec、CInt、CLng、CLngLng、CLngPtr、CSng、CStr、CVar、CVErr、Asc()返回第一個字符的Ascii編碼值、Chr(ASCII碼)返回字符、Hex、Oct、Str()返回字符串、Val(string)、Format、FormatCurrency、FormatDateTime、FormatNumber、FormatPercent、MonthName Nz(表達式或欄位屬性值[,規定值])如果是空,則返回0或者""或者函數的第二個參數值 驗證函數:isNumeric、isDate、isNull、isEmptyIsArray、IsError、IsMissing、IsObject 數學函數:Abs、Sqr、Tan、Atn(即atan)、Sin、Cos、Exp(e為基的指數)、Log自然對數 Array:構造一個Array對象 CallByName:getorsetaproperty,orinvokeamethodatruntimeusingastringname. 控制流:Choose:類似於C語言的select語句、IIf相當於IF-ELSE語句、Switch Command:獲取命令行參數 CreateObject:創建ActiveX對象 CurDir:返回指定驅動器的當前工作路徑 由基本數學函數導出的函數:Sec、Cosec、Cotangent、Cotan、Arcsin、Arccos、Arcsec、Arccosec、Arccotan、HSin、HCos、HTan、HSec、HCosec、HCotan、HArcsin、HArccos、HArctan、HArcsec、HArccosec、HArccotan、LogN DoEvents:暫時把CPU控制權交回給系統。

Environ:返迴環境變量的值 文件操作: Dir:返回滿足條件的所有文件、目錄的名字 EOF FileAttr FileDateTime FileLen FreeFileFunction GetAttr:返回文件、目錄的屬性值 Input:讀取文件 Loc:文件指針位置 LOF:文件打開時的指針位置 Seek:文件指針定位 Spc:使用Print做positionoutput Tab:用於Print函數 Error:錯誤號對應的錯誤消息 WindowsRegistry中的數據:GetAllSettings、SaveSetting、DeleteSetting、GetSetting GetObject:ActiveX組建的引用 IMEStatus:返回當前InputMethodEditor(IME)。

Macintosh平台:MacID、MacScript 金融函數: DDB:使用double-decliningbalance計算貶值 FV:計算固定利率的年金 IPmt:計算利率 IRR:計算利率 MIRR:計算利率 NPer:計算周期數 NPV:計算netpresentvalue Pmt:計算支付數 PPmt:計算本金支付數 PV:計算presentvalue Rate:利息率 SLN:straight-linedepreciation SYD:計算sum-of-years'digitsdepreciation Partition:返回字符串,表示一個數值名字落在各個range內。

常用於SQLselect語句 QBColor:顏色值 RGB:顏色值 TypeName:得到變量的類型名 VarType:得到變量的類型數表達式編輯 比較特殊的運算符有指數運算^,浮點除法/,整數除法\,取模運算Mod,不等邏輯比較運算<> 參考文獻編輯 VBALanguageReferenceforMSOffice2013(頁面存檔備份,存於網際網路檔案館) OfficeVBA語言參考中文版forMSOffice2013(頁面存檔備份,存於網際網路檔案館) OfficeVBA對像庫的引用forMSOffice2013 VBA&VisualBasicScripting中文版語言參考(頁面存檔備份,存於網際網路檔案館) 外部連結編輯 維基教科書中的相關電子教學:VisualBasicforApplications官方網站: Docs-OfficeDevCenter(頁面存檔備份,存於網際網路檔案館) 文檔-Office開發人員中心(頁面存檔備份,存於網際網路檔案館) 取自「https://zh.wikipedia.org/w/index.php?title=Visual_Basic_for_Applications&oldid=71699253」



請為這篇文章評分?