Visual Basic for Applications
编程范型 | Multi-paradigm |
---|---|
Microsoft | |
发行时间 | 1993 |
7.1(Microsoft Office 2021) | |
Microsoft Windows, Mac OS X | |
learn | |
QuickBASIC, Visual Basic |
Visual Basic for Applications(VBA)
數 據 類型
[编辑]基本 數 據 類型
[编辑]- Byte (1):无符
号 类型,取 值范围0-255 - Boolean (2)
- Integer (2)
- Long (4)
- Single (4)
- Double (8)
- Currency (8)
- Decimal (14)
- Date (8)
- String
- Object (4)
- Variant (
根 据 分配 确定)
自 定 义的数 据 类型
[编辑]Type自 定 义类型名 元素 名 As 类型 … [元素 名 As 类型] End Type
數 組
[编辑]Option Base 0 '數 組 索引 值從0開始
Option Base 1 '數 組 索引 值從1開始
Dim MyArray(10) '聲明 一 個 數 組 變量 ,10是 最大 的 可用 的 數 組 索引 值
MyArray(5) = 101 '給 數 組 的 元素 賦 值
Dim Data(10,5) '聲明 一 個 二 維數組 變量
Data(1,1) = "A001" '給 數 組 元素 賦 值
Dim cArr(-11 To 20, 1 To 3) As String '聲明 一 個 數 組 ,定義 數 組 索引 值的上下 界
Dim dArr() As String '聲明 動態 數 組
ReDim dArr(0 To 5, 1 To 2) '改變 動態 數 組 的 尺寸 默認 把 原 數 據 清 除 。如果保留 原 來 的 數 據 ,必須 加 上 參 數 Preserve。
'使用 Preserve參 數 時 只 能 改變 最後 一 維的大小
If UBound(vTemp) = -1 Then
'判斷 數 組 變量 vTemp是 否 為 空 數 組
End If
Erase MyArrar, Data 'Erase語句 清 除數 組 元素 ,釋放 變量 佔用的 空間
常 量
[编辑]Global Const符号 常 量 名称 =常 量 值
调用DLL
[编辑]Private Declare Function getFrequency Lib "kernel32" _ Alias "QueryPerformanceFrequency" (cyFrequency As Currency) As Long Private Declare Function getTickCount Lib "kernel32" _ Alias "QueryPerformanceCounter" (cyTickCount As Currency) As Long
控 制 結構
[编辑]if 語句
[编辑]if條件 1 then語句 1 elseif條件 2 then語句 2 elseif ... ... else語句 n end if
Select Case 語句
[编辑]Select Case表 達 式 Case表 達 式 列 表 1語句 1 Case表 達 式 列 表 2語句 2 ... Case表 達 式 列 表 n語句 n End Select
其中
表 达式例 : "A"用 逗号分 隔 的 一组枚举表达式例 :2,4,6,8表 达式1 To表 达式2例 :60 To 100- Is 关系运算
符 表 达式例 :Is < 60
Do...Loop 語句
[编辑]Do While或 Until條件 語句 塊 1 Exit Do語句 塊 2 Loop
Do語句 塊 1 Exit Do語句 塊 2 Loop While或 Until條件
For...Next語句
[编辑]For循環 控 制 變量 =初 值To終 值Step步 長 語句 塊 ‘Exit For語句 可 以跳出 循環 體 Next
For Each … Next語句
[编辑]For Each循環 控 制 變量 In集合 變量 語句 塊 Exit For語句 可 以跳出 循環 體 Next循環 控 制 變量
跳 出 本 次 循环的 continue语句
[编辑]VBA
For 循環 控 制 變量 =初 值 To 終 值 Step 步 長
Do '用 于模拟continue
語句 塊
If 条件 Then Exit Do '用 于模拟continue
語句 塊
Loop While False '用 于模拟continue
Next
With語句
[编辑]With對象 引用 語句 塊 End With
On Error語句
[编辑]On Error Goto出 錯處理 語句 的 label '跳 轉 到 出 錯處理 語句
On Error Resume Next '遇 到 錯誤 ,不 管 錯誤 ,繼續 往下執行
具有 控 制作 用 的 函数
[编辑]- IIf(
条件 式 ,表 达式1,表 达式2) - Switch(
条件 式 1,表 达式1,[条件 式 2,表 达式2[,...,条件 式 n,表 达式n]]) - Choose(
索引 式 ,选项1[,选项2,...[,选项n]]) '这是基 于1的 索引
其他語句
[编辑]註釋 語句
[编辑]語句 的 連 寫 與 續行
[编辑]如果一行包括多條語句,
過程 與 函數
[编辑]Sub過程 名 (參 數 表 )語句 塊 Exit Sub語句 塊 End Sub
Function函數 名 (參 數 表 ) As Type語句 塊 函數 名 =表 達 式 Exit Function End Function
调用
Dim cn As ADODB.Connection
Set cn = CurrentProject.Connection
Dim rs As New ADODB.Recordset
rs.Open "SELECT * FROM myTable" , cn
Dim ExcelApp As New Excel.Application
Dim ExcelWst As Worksheet
Set ExcelWst = ExcelApp.Workbooks.Add.Worksheets(1)
ExcelWst.Range("A2").CopyFromRecordset(rs) '失 败,无法执行该行
ExcelWst.Range("A2").CopyFromRecordset rs '可 成功 执行该行
常用 内 置 函数
[编辑]VBA
- MsgBox
- InputBox
舍 入 函数 :Fix向 0取 整 ,Int向 下取 整 , Round四 舍 五 入 - Rnd
返 回 0-1内的 单精度 随 机 数 字 符 串 函数 :- Filter:对字
符 串 的 一维数组的过滤 - InStr([Start, ]<Str1>,<Str2>[, Compare])
与 InStrRev: 查找子 串 - Len
字 符 串 长度 - Join:连接一维数组中的所有子字符串
- Left,Right,Mid 截取
子 字 符 串 - Space(
数 值)生成 空 格 字 符 串 - Ucase,Lcase
大小 写 转换函数 - Ltrim, Rtrim,Trim 删除
首尾 空 格 - Replace
- Split:
分割 一个字符串成为一维数组 - StrComp:
字 符 串 比 较 - StrConv:
字 符 串 转换 - String(number, character):
制定 字 符 重 复若干 次 - StrReverse
- Filter:对字
日 期 /时间有 关函数 :- Year, Month, Day, WeekDay,Hour,Minute,Second 截取
日 期 时间分量 - DateAdd
日 期 /时间增量 函数 - DateDiff(<间隔类型>,<
日 期 1>,<日 期 2>[,W1][,W2])日 期 /时间的 距离函数 - DatePart(<
分割 类型>,<日 期 >[,w1][,w2])时间分割 函数 - DateSerial(<
表 达式1>,<表 达式2>,<表 达式3>)合成 日 期 ;DateValue(“字 符 串 表 达式”)返 回 日 期 ; - Date,Time,Now,Timer
返 回 日 期 时间 - DateValue
- TimeSerial:
由 时间序列 得 到 时间对象 - TimeValue:
由 时间字 符 串 得 到 时间对象 - Weekday:获得
日 期 的 周 几 - WeekdayName
- Year, Month, Day, WeekDay,Hour,Minute,Second 截取
- 转换
函数 :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、isEmpty IsArray、IsError、IsMissing、IsObject 数学 函数 :Abs、Sqr、Tan、Atn(即 atan)、Sin、Cos、Exp(e为基的 指数 )、Log自然 对数- Array:构造
一 个Array对象 - CallByName: get or set a property, or invoke a method at run time using a string name.
控 制 流 :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
- FreeFile Function
- GetAttr:
返 回文 件 、目 录的属性 值 - Input:读取
文 件 - Loc:
文 件 指 针位置 - LOF:
文 件 打 开时的 指 针位置 - Seek:
文 件 指 针定位 - Spc:
使用 Print做position output - Tab:
用 于Print函数
- Dir:
- Error:错误
号 对应的 错误消息 - Windows Registry
中 的 数 据 :GetAllSettings、SaveSetting、DeleteSetting、GetSetting - GetObject:ActiveX组建
的 引用 - IMEStatus:
返 回 当 前 Input Method Editor (IME)。 - Macintosh
平台 :MacID、MacScript 金融 函数 :- DDB:
使用 double-declining balance计算贬值 - FV:计算
固定 利率 的 年金 - IPmt:计算
利率 - IRR:计算
利率 - MIRR:计算
利率 - NPer:计算
周期 数 - NPV:计算net present value
- Pmt:计算
支 付 数 - PPmt:计算
本金 支 付 数 - PV:计算present value
- Rate:
利息 率 - SLN:straight-line depreciation
- SYD:计算sum-of-years' digits depreciation
- DDB:
- Partition:
返 回 字 符 串 ,表示 一个数值名字落在各个range内 。常用 于SQL select语句 - QBColor:颜色值
- RGB:颜色值
- TypeName:
得 到 变量的 类型名 - VarType:
得 到 变量的 类型数
表 达式
[编辑]參考 文獻
[编辑]外部 連結
[编辑]官 方 網 站:
|