Visual Basic for Applications - 维基百科,自由的百科全书
文章推薦指數: 80 %
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,]
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」
延伸文章資訊
- 1Excel VBA是什麼?全面解析讓你自動辦公,別再土法煉鋼!
VBA的全名為Visual Basic for Application,其主要使用目的是為Microsoft Office的應用程式設計出使用者所需之功能,讓使用者可以自己進行應用程式之二 ...
- 2Excel VBA 是什麼- 公司工廠軟體,低成本,客製化,作業彈性大
Excel VBA 是什麼 · Excel 是目前企業與各機關行號使用最頻繁的軟體工具。 · Excel VBA 可大量減少Excel 試算表每日重複性資料數據輸入與編輯所產生的工時耗損問題。 ...
- 3Office 的VBA 入門
您可以使用Office 的Visual Basic for Applications (VBA) 來執行這些工作,並完成其他許多工作— Office 的VBA 是一個簡易卻功能強大的程式設計語言...
- 4別再做Excel苦工!6 張圖學會「巨集」功能,自動完成重複的 ...
提到程式,很多人就會覺得困難,但Excel VBA是透過錄製巨集產生程式碼,讓電腦幫忙寫程式,和傳統的程式語言(C或Java)相比,在學習路線上會更容易。本文 ...
- 5什麼是Excel VBA?它有什麼作用? - 人人焦點
VBA 是Office(這裡我們指的就是Microsoft Excel軟體啦)中包含的一種用於擴展office功能的Basic語言,VBA的全稱是Visual Basic for Aapplic...