导图社区 Excel-VBA详尽手册
这是实用和详尽的VBA相关的Object、Property、Method、语法的系统化架构手册,并且包含实际不少案例。花了非常多时间整理出来!
编辑于2024-10-31 11:46:44Excel VBA
对象(Object)
Application
.Version
Excel版本,e.g. 16.0
.UserName
当前用户名,e.g. wangting
.WindowState
= xlMaximized:窗口最大化
= xlMinimized:窗口最小化
= xlNormal:窗口一般显示
.Height
窗口高度,e.g. = 540
.Width
窗口宽度,e.g. = 300
.ReferenceStyle
= xlA1,'A1引用样式,即row显示使用字母
= xlR1C1,'R1C1引用样式,即row显示使用数字
.RecentFiles.Maximum
最近使用的文件清单的最大数,影响打开-最近的文件
.Caption
Excel的标题
.Visible
= False:隐藏正在使用的工作簿
= True:显示正在使用的工作簿
.OrganizationName
注册组织名
.OperatingSystem
当前操作系统的名称和版本号
.Path
Excel安装路径,e.g. C:\Program Files\Microsoft Office\Root\Office16
.LibraryPath
Excel库文件夹路径,e.g. C:\Program Files\Microsoft Office\Root\Office16\LIBRARY
.UserLibraryPath
COM加载宏文件夹
.TemplatesPath
Excel模板保存路径,e.g. C:\Users\Lenovo\AppData\Roaming\Microsoft\Templates\
.StartupPath
启动Excel的路径
.DefaultFilePath
Excel打开文件时的默认路径
.PathSeparator
获取路径分隔符,e.g./
.Left
Excel主窗口的左边界位置
.Top
Excel主窗口的顶端位置
.UsableWidth
Excel主窗口中所能占有的最大宽度
.UsableHeight
Excel主窗口中所能占有的最大高度
.ActivePrinter
当前打印机(可读取也可指定)
.StatusBar
Excel窗口左下角显示内容,类似MsgBox
.DisplayFullScreen
= True:全屏显示
= False:非全屏显示
.DisplayFormulaBar
= True:显示编辑栏(即工具栏)
= False:隐藏编辑栏(即工具栏)
.DisplayStatusBar
= True:显示状态栏
= False:隐藏状态栏
CommandBars("Standard").Visible
= True:显示常用工具栏
= False:隐藏常用工具栏
.CommandBars("Task Pane").Visible
= True:显示任务窗格
= False:隐藏任务窗格
CommandBars("Formatting").Visible
= True:显示格式工具栏
= False:隐藏格式工具栏
CommandBars("Workbook Tabs").
ShowPopup x:=xxx, y:=xxx
.MoveAfterReturn
= True:按下Enter后鼠标移动
= False:按下Enter后鼠标不移动
.Cursor
= xlWait
鼠标变成沙漏形状
= xlDefault
鼠标变成默认形状
.MoveAfterReturnDirection
= xlToRight:向右移动
= xlDown:向下移动
= xlToLeft:向左移动
= xlUp:向上移动
.Calculation
= xlCalculationAutomatic:自动计算
= xlCalculationManual:手动计算
= xlCalculationSemiautomatic:除模拟运算表外,自动计算
.Calculate
对区域内的公式进行计算
.SheetsInNewWorkbook
新工作簿中的工作表个数,只影响新建-工作表
.AutoRecover
.Time
自动保存的时间
.Path
自动保存的路径
.EnableEvents
= True:使事件生效
= False:使事件无效
.EnableCancelKey
= xlDisabled:完全禁用取消键捕获功能
= xlInterrupt:可以使用取消键捕获功能
.DisplayAlerts
= True:显示警告信息框
= False:不显示警告信息框
.ScreenUpdating
= True:继续屏幕刷新
= False:停止屏幕刷新
.AddIns("分析工具库").Installed
= True:安装对应的宏
= False:不安装对应的宏
.GetOpenFilename
()
获取打开的文件名,e.g. C:\Users\Lenovo\Desktop\RD2023研讨会议日程.xlsx
("文本文件(*.txt), *.txt")
获取打开的.txt文件名,第一个参数显示在打开文件窗口
("图片文件(*.bmp;*.jpg),* bmp;*.jpg")
获取打开的.bmp和.jpg文件名,第一个参数显示在打开文件窗口
假如返回值为"False",则表示没有选择文件
.GetSaveAsFilename
()
获取要保存的文件名,e.g. C:\Users\Lenovo\Desktop\RD2023研讨会议日程.xlsx
其他参数同.GetOpenFilename
Dialogs(Range or i).Show
显示Range(单元格)值对应的对话框,可以是代号,也可以是数字
.CentimetersToPoints()
将厘米转化为points,e.g. xxx.RowHeight = Application.CentimetersToPoints(1)
.InchesToPoints()
将英尺转化为磅
.Union
可以将多个区域进行聚合
.OnTime Now + TimeValue("00:00:05"), "mysub"
延时5s运行“mysub”
.OnTime TimeValue("9:30:00"), "mysub"
9:30运行“mysub”
.OnTime EarliestTime:=NextTime, Procedure:="mysub"
NextTime运行“mysub”
.OnTime EarliestTime:=NextTime, Procedure:="mysub", Schedule:=False
取消计划
.WorksheetFunction
.CountIf
.CountIf([a1:a65536], "张*")
区间含有姓张的个数
.Transpose(arr)
用于切换数组的横向和纵向
.Trim(String)
去除String里面除了字符之间单空格之外的空格
.Match()
比如:.Match("王磊", i, 0)
第一个参数:关键词
第二个参数:要找寻的数组
第三个参数:匹配类型
.IsNumber()
判断是否为数字
.VLookup
在一列中找关键词并返回一行中另一列内容
第一个参数:关键词
第二个参数:范围(只查找第一列)
第三个参数:列数目,返回的列
第四个参数:精确匹配或模糊匹配
True
精确匹配
False
模糊匹配
.DCountA
返回指定字段中满足给定条件的非空单元格数目
第一个参数:
函数所使用的范围
第二个参数:
函数所使用的数据列
第三个参数:
条件所存储的范围
.CountA
非空单元格数目
.DGet
从表格中抽取符合条件的单个值
第一个参数:
查询区域
第二个参数:
要返回的列
第三个参数:
条件区域
.Rank
返回一个数字在数字列表中的排位
第一个参数:
要查找的关键词
第二个参数:
要查找的范围
第三个参数:
查找顺序
.Index
从array,table,range中根据选定row和column,返回Array或者Reference
.LinEst
用于执行线性回归分析并返回描述线性关系的统计值数组。这些值包括斜率(m)、截距(b)、相关系数(r²)、标准误差以及其他的统计参数
.Fixed
用于将数字格式化为具有固定小数位数的文本,并可以添加千位分隔符
第一个参数:数值
第二个参数:小数位数
第三个参数:是否添加千位分隔符
.Days360
返回两个日期之间的天数,按每个月30天计算
.Min
用于返回给定数值范围中的最小值
.Max
用于返回给定数值范围中的最大值
.Average
用于返回给定数值范围中的平均值
.MMult
矩阵乘积
.Fact
阶乘,如1*2*3...
.SumProduct
数组乘积
.Sum
求和
.Small
用于返回数据集中第k小的值
第一个参数:数据集,如array
第二个参数:k
.Large
用于返回数据集中第k大的值
第一个参数:数据集,如array
第二个参数:k
.Sin
Sin,以度为单位
.Pi
Pi自然数
.RandBetween(a,b)
在a和b之间取随机数
.Substitute
关键词替换
第一个参数:要替换的数据
第二个参数:被替换的关键词
第三个参数:替换的关键词
.InputBox
第一个参数(Prompt:=)
对话框中出现的信息
第二个参数
对话框标题
第三个参数
默认的输入内容
Type:=
Type:=1 + 2表示输入数字或文本
.Rows
Active Worksheet的所有行
.Columns
Active Worksheet的所有列
.Intersect
返回两个区域的交叉部分
.Undo
撤销最后一次用户界面操作
.Quit
结束应用程序
.CutCopyMode
True
打开cutcopy模式
False
关闭cutcopy模式
.Run
myStr = "N_Sample007_1" Application.Run myStr
Run myStr
.Run "N_Test.xlsm!N_Sample002_1"
Run其他工作簿中的程序
.VBE.ActiveVBProject
.Description
工程说明
.Filename
工程文件完整路径名
.HelpFile
帮助文件
.Type
工程类型
.Protection
是否保护
.Mode
工程当前状态(0为运行、1为中断、2为设计)
.VBComponents
VBComponents("xxx")
.Name
.Type
.Export
.FileSearch
寻找文件
.NewSearch
.LookIn
找寻的路径
.FileType
msoFileTypeAllFiles
.Filename
"*.*"
.SearchSubFolders
True
False
.Execute
.FoundFiles
.Count
.FoundFiles(i)
Evaluate
将字符串的名称转换为object或value
如: myStr = "(1+2)*(3-4)" MsgBox myStr & "=" & Application.Evaluate(myStr)
.CellDragAndDrop
True
允许单元格拖放功能(自动填充)
False
禁用单元格拖放功能(自动填充)
FindFormat
用于寻找特定格式的单元格,如Find函数使得SearchFormat:=True
.Interior.Color
.Volatile
工作表发生变化时调用该函数
.CountBlank
计算区域内空单元格的数目
.GoTo
跳转到对应的区域,如:Application.Goto Reference:=myRange, Scroll:=True
Windows
.NewWindow
创建新窗口
.Count
Window的数量
.Close
关闭窗口
.Arrange
ActiveWorkbook:=
True
False
SyncHorizontal:=
True
False
SyncVertical:=
True
False
Arrangestyle:=
如xlArrangeStyleTiled表示平铺窗口
Workbooks(i)
第i个Window
ActiveWindow/Windows(i)/ActiveWorkbook.NewWindow
.WindowState
.WindowNumber
窗口号
.FreezePanes
True:窗格被冻结
False:窗格没有被冻结
.Panes.Count
窗格数目(如只有首行/首列被冻结则为2)
.Panes(1).VisibleRange.Address
窗格中左上角可见单元格区域地址
.DisplayFormulas
True:显示公式
False:不显示公式
.DisplayGridlines
True:显示网格
False:不显示网格
.DisplayHeadings
True:显示列标行号
False:不显示列标行号
.DisplayOutline
True:显示分级显示符号
False:不显示分级显示符号
.DisplayZeros
True:显示零值
False:不显示零值
.DisplayHorizontalScrollBar
True:显示水平滚动条
False:不显示水平滚动条
.DisplayVerticalScrollBar
True:显示垂直滚动条
False:不显示垂直滚动条
.DisplayWorkbookTabs
True:显示工作表标签
False:不显示工作表标签
.GridlineColor
= RGB(255, 0, 0)或者=3表示设置cell边框为红色
.GridlineColorIndex
= xlColorIndexAutomatic表示设置cell边框为默认颜色
.SelectedSheets
选中的Sheet(可以是多个)
.Split
True
窗口已拆分
False
窗口未拆分
.SplitColumn
左右拆分位置(列号)
.SplitRow
上下拆分位置(行号)
.SplitHorizontal
左右拆分位置(磅数)
.SplitVertical
上下拆分位置(磅数)
.Zoom
e.g. 150代表显示比例150%
.Left
窗口距离左边的位置
.Top
窗口距离上边的位置
.Width
窗口宽度
.Height
窗口高度
.EnableResize
True
支持重新设置窗口大小
False
不支持重新设置窗口大小
.NewWindow
创建窗口副本
.SmallScroll
Down:=i
将行向下拖动i行
.View
xlPageBreakPreview
显示分页预览窗口
xlNormalView
关闭分页预览窗口
.VisibleRange
工作簿窗口范围内的可见单元格区域
Workbooks
Workbooks(i)
第i个Workbook
Workbooks("xxx")
xxx名字的Workbook
.Open
Filename:="xxx"
打开某个文件,包含路径
UpdateLinks:=
True
更新链接打开工作簿
False
不更新链接打开工作簿
.Add
创建了一个新工作簿
.SaveAs
Filename:="xxx"
以名字xxx保存
.OpenText
打开txt文本文件为工作簿
Filename:=
StartRow:=
DataType:=
xlDelimited
Comma:=
True
False
FieldInfo:=
.Open
打开csv文件为工作簿
Filename:=
ActiveWorkbook/ThisWorkbook/Workbooks("xxx")/Workbooks(i)
.Sheets
表示Workbook的所有Sheet(可以用for each)
.Count
Worksheet的数量
.UsedRange
实际使用到的Range
.SaveAs
Filename:=
指定文件名
FileFormat:=
如xlOpenXMLWorkbook表示xlsx文件
CreateBackup:=
True
False
Password:=
"xxx"
.SaveCopyAs
保存副本为
.Close
savechanges:
True:保存工作簿
False:不保存工作簿
.Name
Workbook的名称
.Path
Workbook的路径,假如从未保存,Path为空
.ReadOnly
True:工作簿以只读方式打开
False:工作簿以普通方式打开
.BuiltinDocumentProperties
返回DocumentProperties的集合
.Activate
激活指定的工作簿
.FullName
返回包含path的名字
.FileDateTime
文件最后修改时间
.Saved
True:从上次保存到现在没有任何变更
False:从上次保存到现在有变更没保存
.IsAddin
True:工作簿是加载宏工作簿
False:工作簿不是加载宏工作簿
此参数可以读取或者设置
.BuiltinDocumentProperties("Last Save Time")
工作表上次保存的时间
.BuiltinDocumentProperties("Title")
工作表标题属性
.BuiltinDocumentProperties("Subject")
工作表主题属性
.BuiltinDocumentProperties("Author")
工作表作者属性
.BuiltinDocumentProperties("Company")
工作表公司属性
.BuiltinDocumentProperties("Comments")
工作表备注属性
.BuiltinDocumentProperties("Keywords")
工作表标记属性
.Protect
Password:=
Structure:=
True
False
Windows:=
True
False
.Unprotect
设置工作表未受保护
.SendMail
Recipients:="yuyu505@yeah.net"
Subject:="电子表格"
.ReadOnly
True
False
For Each myName In Workbooks(i).Names
myName
.Delete
.RunAutoMacros xlAutoOpen
Run Auto_Open macro(文件打开自动运行)
.Move
After:=
Before:=
.ShowPivotTableFieldList
True
显示数据透视表FieldList
False
不显示数据透视表FieldList
.PivotCaches
.Add
SourceType:=xlDatabase
SourceData:=source
.CreatePivotTable
用于根据Cache产生PivotTable report
TableDestination:=""
Tablename:=tablename
DefaultVersion:=xlPivotTableVersion10
Worksheets
为Worksheet的集合,可以用For Each
Worksheets("xxx")
.Add
Worksheets.Add before:=Worksheets("sheet2")
Worksheets.Add Count:=3 '添加三个工作
可以赋值,如Set mySht = myWb.Worksheets.Add
.Count
Worksheet的数量
Worksheets(i)
第i个Worksheet
Worksheets(Array(myStr1, myStr2, myStr3))
制定多个工作表
.Item
类似于Worksheets(i)
Labels.Add(10, 10, 100, 20)
在指定位置添加标签
.Buttons.Add(10, 50, 100, 20)
在指定位置添加按钮
.CheckBoxes.Add(10, 90, 100, 20)
在指定位置添加复选框
.OptionButtons.Add(10, 130, 100, 20)
在指定位置添加选项按钮
.ListBoxes.Add(10, 170, 100, 20)
在指定位置添加列表框
.DropDowns.Add(10, 210, 100, 20)
在指定位置添加复合框
.ScrollBars.Add(10, 250, 100, 20)
在指定位置添加滚动条
.Spinners.Add(10, 310, 100, 20)
在指定位置添加微调项
ActiveSheet/Worksheets("xxx")/Worksheets(i)
Sheets 集合包含了工作簿中所有的工作表(Worksheet)、图表(Chart)以及任何其他的Sheet类型(比如DialogSheet,但在较新的Excel版本中已废弃); Worksheets 集合专门用于包含工作簿中所有的Worksheet对象
.Buttons
.Delete
删除工作表中的按钮
.Add(150, 10, 120, 30).Select
添加一个按钮并选中,参数分别表示x-offset、y-offset、长、高
.UsedRange
使用到的区域,不包含空单元行列,包括空单元格
.Name
Worksheet的名称
.ProtectContents
工作表中的内容是否处于保护状态
.ProtectDrawingObjects
工作表中的形状是否处于保护状态
.ProtectScenarios
工作表的方案是否处于保护状态
.ProtectionMode
工作表界面是否处于保护状态
.Protection
.AllowDeletingColumns
是否允许删除受保护的工作表上的列
.AllowDeletingRows
是否允许删除受保护的工作表上的行
.AllowFiltering
是否允许用户使用工作表受保护之前设置的“自动筛选”
.AllowFormattingCells
是否允许对受保护的工作表上的单元格进行格式设置
.AllowFormattingColumns
是否允许对受保护的工作表上的列进行格式设置
.AllowFormattingRows
是否允许对受保护的工作表上的行进行格式设置
.AllowInsertingColumns
是否允许在受保护的工作表上插入列
.AllowInsertingHyperlinks
是否允许在受保护的工作表上插入超链接
.AllowInsertingRows
是否允许用户在受保护的工作表上插入行
.AllowSorting
是否允许在受保护的工作表上进行排序
工作表保护状态,True or False
.Visible
xlSheetHidden
不显示,用户可以设置其显示
xlSheetVeryHidden
不显示,用户不可以设置其显示
xlSheetVisible
显示
工作表的显示状态
.EnableCalculation
是否启动自动计算
.EnableAutoFilter
在表被保护的时候,是否启用自动筛选
.EnableOutlining
在表被保护的时候,是否启用分级显示符号
.EnablePivotTable
在表被保护的时候,是否启用数据透视表控件和操作
.EnableSelection
xlNoSelection
在表被保护的时候,不允许全部选中单元格
xlUnlockedCells
在表被保护的时候,允许选中没有锁定的单元格
xlNoRestrictions
在表被保护的时候,允许全部选中单元格
工作表可操作状态,除了xl外True or False
.FilterMode
True:工作表设置了筛选
False:工作表没设置筛选
.Rows
Selection区域的Row
.Columns
Selection区域的Column
.Comments
所有批注的集合,注意可以用Each xxx In .Comments -> xxx.Shape引用
.Parent
访问一个对象的直接父对象,.Comments的父对象为Worksheet
Each one In .Comments
.Author
.Text
.Visible
.Delete
.Add
添加Worksheet
(Before:=Worksheets(i/"xxx"))
(After:=Worksheets(i/"xxx"))
.Hyperlinks
.Add
Anchor:=
相当于产生Hyperlink的地址Offset
Address:=
SubAddress:=
TextToDisplay:=
Hyperlink的标题值
ScreenTip:=
鼠标放在Hyperlink上的Tip值
.Delete
删除Worksheet
.Hyperlinks
工作表Hyperlinks的集合
Each one In .Hyperlinks
.Delete
删除超链接
.Shapes
.AddShape
(msoShapeSmileyFace, 100, 100, 150, 100)
添加笑脸图形
(Type:=msoShapeRectangle, Left:=50, Top:=100, Width:=200, Height:=100)
添加矩形
.AddShape
Shape的名字
Shape的名字
.Item
(Shape Name)
引用某个具体的Item
.Count
Shape的数量
.AddFormControl(xlButtonControl, 50, 100, 200, 30).Name = myName
添加按钮
Each one In .Shapes/Shapes(i)
.Delete
删除图形
.Top
距离顶部位置
.Left
距离左边位置
.Fill.ForeColor.RGB
颜色设置
.IncrementRotation
位置旋转
.Placement
.Type
参考MsoShapeType Enum
.Fill.Visible
msoTrue
msoFalse
.Line.Visible
msoTrue
msoFalse
.OnAction
制定宏
.Visible = False
图形不可见
.CopyPicture
复制图像
.Delete
删除图像
.ControlFormat.PrintObject
True
打印Shape对象
False
不打印Shape对象
.ShapeRange.ThreeD.SetThreeDFormat i
设置第i种三维样式
.Move
Before:=Sheets(i)
Worksheet移动到Sheets(i)之前
After:=Sheets(i)
Worksheet移动到Sheets(i)之后
.Copy
.Tab
.Color
= RGB(255, 0, 0)
设置Tab为红色
.Protect
Password:=
以密码保护
DrawingObjects:=
True
保护图表
False
不保护图表
Contents:=
True
保护单元格内容
False
不保护单元格内容
Scenarios:=
True
保护方案
False
不保护方案
UserInterfaceonly:=
True
保护不让用户擅自操作
False
不保护不让用户擅自操作
.Unprotect
设置工作簿未保护
Password:=
输入密码解除保护
.Pictures
.Paste Link:=True
黏贴图片(需要先Copy)
.Insert(xxx)
插入图片
ChartObjects(i).Chart
.ChartArea.ClearFormats
图表清除格式
Chart.Location
Where:=xlLocationAsNewSheet
Name:="xxx"
ChartObjects
.Delete
删除工作表上面的图表
.Count
工作表上面图表的数目
.QueryTables.Add
可以用于导入文本文件、URL等
Connection:=myURL
Destination:=Range("A1")
.Name = "fl" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "14" .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False
.OLEObjects("xxx").Object.Value
滚动条的值
.ScrollArea
可滚动区域
.AutoFilter
True
sheet包含autofilter
False
sheet不包含autofilter
.Select
选择工作表
.Activate
激活工作表
.CodeName
编程名称
.PrintPreview
打印预览
enablechanges:=False
不允许在预览时进行打印设置
.PrintOut
打印工作表
from:=
to:=
copies:=
可以打印多份
preview:=
True
False
.PageSetup
.PrintArea
打印区域
.PrintTitleColumns
打印列标题
.PrintTitleRows
打印行标题
.LeftMargin
页面的左边距(单位:磅,points)
.RightMargin
页面的右左边距(单位:磅,points)
.TopMargin
页面的顶部边距(单位:磅,points)
.BottomMargin
页面的底部边距(单位:磅,points)
.HeaderMargin
页面顶端到页眉的距离(单位:磅,points)
.FooterMargin
页脚到页面底端的距离(单位:磅,points)
.LeftHeader
设置页眉
.CenterHeader
设置页眉
.RightHeader
设置页眉
.LeftFooter
设置页脚
.CenterFooter
设置页脚
.RightFooter
设置页脚
.CenterHorizontally
True
页面水平居中
False
页面非水平居中
.CenterVertically
True
页面垂直居中
False
页面非垂直居中
.Orientation
xlPortrait
纵向打印
xlLandscape
横向打印
.Order
xlDownThenOver
由上到下再由左到右
.PaperSize
xlPaperA4
A4打印纸
.Zoom
打印页缩放比例,如:ActiveSheet.PageSetup.Zoom = 75
.FitToPagesWide
是否缩放到页宽
.FitToPagesTall
是否缩放到页高
.PrintHeadings
是否行标题和列标题
.PrintGridlines
是否打印网格线
.VPageBreaks.Count
vertical page breaks on the sheet
.HPageBreaks.Count
horizontal page breaks on the sheet
.VPageBreaks.Count + 1 * .HPageBreaks.Count + 1
两者相乘为打印的页数
.ResetAllPageBreaks
重新设置分页符
.HPageBreaks.Add
插入分页符
Before:=
After:=
.PivotTables(i)
.RefreshTable
更新数据透视表的数据
.PivotCache
数据透视表的Cache
.PivotFields("xxx")
.Orientation
xlRowField
xlColumnField
xlPageField
.Position
.CalculatedFields.Add
添加数据透视表计算区域
.PivotTableWizard
TableDestination:=
用于产生新的PivotTable report
创建数据透视表
第一步:wb.PivotCaches.Add(xxx).CreatePivotTable(xxx)
第二步:ws.PivotTableWizard
第三步:ws.Name
Names
.Count
名称的数量
.Names(i).Delete
删除第i个名称
Name
.RefersToRange
返回名字所对应的区域,可以是workbook的名字,如:wb.Names("姓名").RefersToRange
Shapes(i)
注意Coments也是一种Shape:可以用Each xxx In .Comments -> xxx.Shape来引用
.Characters.Text
形状的文字
.OnAction
形状被选中时执行的操作
.Type
msoFormControl
具体参考MsoShapeType enumeration
.Delete
.Name
.TextEffect.Text
有文本效果(msoTextEffect)的对象文字
.TextFrame.Characters.Text
无文本效果的对象文字
.TextFrame.Characters.Font
无文本效果的对象文字字体
.LockAspectRatio
msoFalse
不锁定比例
.Height
.Width
.Left
.Top
.TopLeftCell.Address
形状的左上角单元格地址
.BottomRightCell.Address
形状的的右下角单元格地址
.OnAction
= ""
形状没有制定宏
<> ""
形状制定宏的名字
.FormControlType
xlButtonControl
按钮
xlCheckBox
复选框
xlDropDown
组合框
xlGroupBox
分组框
xlLabel
标签
xlListBox
列表框
xlOptionButton
选项按钮
xlScrollBar
滚动条
xlSpinner
微调项
Charts
.Add
创建图表
Before:=
在某个worksheet之前
.Count
图表的数量
ActiveChart/Charts(i)
.ChartType
= xlColumnClustered
.SetSourceData
Source:=
PlotBy:=xlRows
.Location
Where:=xlLocationAsObject
Name:=temp.Name
.HasTitle
True
False
.HasDataTable
是否在图表中显示数据表
True
False
.Axes(xlCategory, xlPrimary).HasTitle
X坐标轴有无图表标题
True
False
Axes(xlCategory,xlPrimary).AxisTitle.Characters.Text
.Axes(xlValue, xlPrimary).HasTitle
Y坐标轴有无图表标题
True
False
.Axes(xlValue,xlPrimary).AxisTitle.Characters.Text
Axes(xlCategory).ReversePlotOrder
True
False
.Axes(xlCategory)
.MinimumScale = xmin
X坐标轴最小刻度
.MaximumScale = xmax
X坐标轴最大刻度
AxisBetweenCategories = False
合并坐标轴零点
.Axes(xlValue)
.MinimumScale = ymin
Y坐标轴最小刻度
.MaximumScale = ymax
Y坐标轴最大刻度
.TickLabelPosition
xlTickLabelPositionHigh
Y轴坐标轴刻度到图表的右方
.ReversePlotOrder
翻转图表
.ChartWizard
用于快速创建图表
Source:=
数据来源
Gallery:=
xlRow
画柱状图
xlLine
画折线图
xl3DArea
3D图
xlXYScatter
xy散点图
xl3DColumn
三维柱形图
xlBar
条形图
xlRadarFilled
雷达图
PlotBy:=
xlColumns
xlRows
CategoryLabels:=
1
SeriesLabels:=
1
HasLegend:=
True
有图例
False
无图例
CategoryTitle:=
横轴标题
ValueTitle:=
纵轴标题
Title:=
总的标题
.ChartObjects.Add(30, 100, 300, 180).Select
添加图表并选中
.ChartType
读取或修改图标的类型,如xl3DColumn
.SetSourceData
Source:=
PlotBy:=
.ChartTitle
.Characters.Text
标题名称
.Text
标题名称
.Font.Size
.Font.ColorIndex
.SeriesCollection
.Add
向图表中添加新的数据系列
.NewSeries
添加新的系列到图表中
.HasDataLabels
是否显示数据标签
True
False
.DataLabels.ShowLegendKey
True
False
.SeriesCollection(i)
.Border.LineStyle
.Interior.ColorIndex
.XValues
画图的x轴数据
.Values
画图的y轴数据
.Name
.Points(i).DataLabel.Text
图表上面的文字
Trendlines.Count
趋势线数量
.Trendlines.Add
添加新的趋势线
Type:=xlLinear
Forward:=0
Backward:=0
DisplayEquation:=True
DisplayRSquared:=True
Trendlines(i)
.Delete
删除趋势线
.DataLabel
.Delete
删除趋势线方程
.Left
趋势线方程位置
.Top
趋势线方程位置
.Type
趋势线类型
.DisplayRSquared
True
False
.DisplayEquation
True
False
.DataLabel.Text
.Formula
某个系列的公式
DataLabels.Position
xlLabelPositionCenter
数据系列标签显示位置设在中间
.HasAxis(xlValue, xlPrimary)
是否显示纵坐标轴
True
False
ChartGroups(i)
.HasSeriesLines
True
False
.SeriesLines.Border.LineStyle =
xlDot
.SplitType =
xlSplitByValue
.SplitValue =
90
.HasDropLines = True
添加垂直线
ChartArea
图表区域
.Interior
.ColorIndex
.PatternColorIndex
.Pattern
.Border.ColorIndex
.Border.Weight
.PlotArea
图表中的绘图区域
.Interior
.Color
.ColorIndex
.PatternColorIndex
.Pattern
SeriesCollection(i)
图表中的数据系列区域
.Borders
.ColorIndex = 3
.Weight = xlThin
.LineStyle = xlDot
.MarkerStyle = xlCircle
.Smooth = True
.MarkerSize = 5
.Legend
.Delete
删除图例
.Font
.Size
.Bold
.Italic
.ColorIndex
.Position
xlLegendPositionLeft
图例放在图片左侧
.Left
.Top
.Height
.Width
.Export
导出为某文件,如JPG
Filename:=
Filtername:=
.Rotation
图表的Z轴旋转角度
.Elevation
图表的仰角
.SizeWithWindow = True
调整图表尺寸符合工作表视图的大小
.Delete
删除图表
Range/Selection
Range("5:5")
第五行
Range("B:B")
第五列
.HasFormula
True
范围内单元格有公式
False
范围内单元格无公式
.Rows
.Count
范围内Row的数量
.RowHeight
行高
.AutoFit
自动调整行高
Rows(i)
范围内的第i行
.PageBreak = xlPageBreakManual
插入分页
.Font
.Size
.Name
.Color
.Bold
.Italic
.ColorIndex
.Insert(需要先Copy,或者不Copy)
也可以不加Shift:=参数
Shift:=
xlDown
CopyOrigin:=
xlFormatFromRightOrBelow
.Columns
("A:B")
表示A到B列
(i)
表示i列
.Count
范围内Column的数量
.AutoFit
自动调整列宽
Columns(i)
范围内的第i列
.ColumnWidth
列宽
.WrapText
True
进行自动换行操作
False
不进行自动换行操作
.PageBreak = xlPageBreakManual
插入分页
.Copy
Range("A1").Copy Range("B1")
对于目标区域,我们可以只指定左上角单元格
Destination:=
目标区域,我们可以只指定左上角单元格
.Paste
需要先.Copy,再使用.Paste
.PasteSpecial
Paste:=
xlPasteComments
复制批注
xlPasteValidation
复制单元格有效值设置,e.g.大于某个日期,区间内整数(下拉框)
其他
Operation:=
xlPasteSpecialOperationAdd
加法计算黏贴
xlPasteSpecialOperationSubtract
减法计算黏贴
xlPasteSpecialOperationMultiply
乘法计算黏贴
xlPasteSpecialOperationDivide
除法计算黏贴
.Address
可以返回不连续的Range的地址,以逗号隔开
(RowAbsolute:=False, ColumnAbsolute:=False)
返回相对地址,如A1、A1:B1
(RowAbsolute:=True, ColumnAbsolute:=True)
(默认)返回绝对地址,如$A$1、$A$1:$B$1
.Row
返回Row的标号
.Column
返回Column的标号
.Characters (Start:=, Length:=)
用以表示截取的一段字符串Range
.Font
.Name
名称
.FontStyle
字形,如“加粗”
.Size
字号
.Bold
True
加粗
False
不加粗
.Italic
True
斜体
False
非斜体
.ColorIndex
颜色
.Underline
下划线
xlUnderlineStyleNone
True
有下划线
False
无下划线
.Strikethrough
True
删除线
False
无删除线
.Superscript
True
有上标
False
无上标
.Subscript
True
有下标
False
无下标
.OutlineFont
True
空心字体
False
非空心字体
.Shadow
True
字体有阴影
False
字体无阴影
.ThemeColor
配色方案中的主题颜色
.TintAndShade
.RowHeight
行高
.ColumnWidth
列宽
.CurrentRegion
返回由空白行和空白列所包围的单元格区域,为Range类型
.Areas
统计区域内的块数目
.Select和.Activate
Range的Select和Activate的区别: 即使选定了单元格区域,也只能有一个活动单元格
.Select False
不选中某一个Shape
.Cut
和Copy类似
.Cells
参数为数字,则代表Range内第几个cell(横着数数)
.Count
Range内cell的数量
.Row
.Column
.Value
.AutoFill
Destination:=
选定某个Range进行自动填充
Type:=
xlFillDays
xlFillDefault
xlFillSeries
...
.Borders(xxx)
xxx
xlDiagonalDown
左上角至右下角的边框
结合字体的上下标,可以做出分隔的效果
xlDiagonalUp
左下角至右上角的边框
xlEdgeLeft
左边边框
xlEdgeTop
顶部边框
xlEdgeBottom
底部边框
xlEdgeRight
右边边框
xlInsideVertical
垂直边框
xlInsideHorizontal
水平边框
.ColorIndex
框线颜色
xlAutomatic
自动颜色
.Color
框线颜色
Color赋值的三种办法
= QBColor(i)
= RGB([a1], [b1], [c1])
= [b1]
总计有255^3种颜色
.LineStyle
框线类型
xlContinuous
连续线
xlDash
不连续线
xlDashDot
单点不连续线
xlDashDotDot
两点不连续线
xlDash
虚线
xlNone
无
.Weight
框线粗细
xlMedium
xlThin
.NumberFormatLocal
单元格的数字格式,具体参考MS Support
"# ?/10"
10分之几显示
"0.00%"
百分比显示,并保留两位小数
"[DBNum1][$-804]yyyy""年""m""月""d""日"";@"
年月日显示
"¥#,##0.0;¥-#,##0.0"
显示钱的格式
"0.00E+00"
科学计数法显示
"¥#,##"
整数显示钱的格式
"[$-F800]ddd,mmmm dd,yyyy"
年月日的日期格式
.NumberFormat = "0.00"
设置数据格式
.Count
Range内cell的数量
.Interior
.ColorIndex(i)
填充颜色,为预定义颜色中的第i个
.Color
= RGB(255, 0, 0) 为设置为红色
= -11480942 也可以是HSL颜色
.ColorIndex
xlAutomatic
自动颜色
.Pattern
内部图案
xlSolid:纯色
.PatternColorIndex
内部图案颜色
xlAutomatic:自动调色
.ClearFormats
删除格式
.AutoFormat
xlRangeAutoFormatAccounting1 etc.
<会计1>的格式
"1:1,3:3,5:5"
表示第一行、第三行、第五行
.SpecialCells()
Type:=
如xlCellTypeConstants表示含有常量的单元格,返回Range类型
Value:=
xlCellTypeConstants
xlCellTypeFormulas
.PasteSpecial
Paste:=
如xlPasteValuesAndNumberFormats表示只复制值和数字格式
.Parent
访问一个对象的直接父对象,Range的父对象为Worksheet
.Name
命名区域的名字
Range("a, b")
区域a和b
.Value
区域的值,应该只返回第一个。可以读写
多种数据类型(数字型、文本型、布尔型等)
.Text
区域的值,应该只返回第一个
文本型[String]
.Delete
删除区域的值
.Merge
合并单元格
.Replace
第一个参数
字符串
第二个参数
要替换的字符
第三个参数
替换成的字符
第四个参数
返回字符串开始个数
第五个参数
替换的次数
第六个参数
比较的模式
返回值
替换完成之后的字符
Range(Cells(a, b), Cells(c, d))
Cell(a,b)到Cell(c,d)的区域
.FormatConditions
.Add
Type:=xlExpression
Formula1:="=RC5=max(C5)"
.AddUniqueValues
.Count
.Delete
FormatConditions(i)
.SetFirstPriority
将conditional formatting rule的优先级/序号设置为1
.DupeUnique
xlDuplicate
寻找重复数值
xlUnique
寻找独立数值
.Font
.Color
.TintAndShade
.Interior
.PatternColorIndex
.Color
.TintAndShade
.StopIfTrue
True
False
.EntireRow
.Hidden
True
隐藏所有行
False
不隐藏所有行
.Insert Shift:=
xlShiftDown
.EntireColumn
.Hidden
True
隐藏所有列
False
不隐藏所有列
.Insert
Shift:=
xlShiftToRight
.Offset(x,y)
.EntireRow
为Range类型,可以套用其子函数
.Delete
删除所有行
.Hidden
True
False
.Select
.Copy
.Insert Shift:=
xlShiftDown
.Select
.Validation(数据验证)
.Delete
.Add
Type:=
xlValidateWholeNumber
xlValidateDecimal
小数
xlValidateDate
输入日期
xlValidateTime
输入时间
xlValidateTextLength
输入文本长度
xlValidateList
设置输入序列
AlertStyle:=xlValidAlertStop
Operator:=
xlBetween
双Formula
xlGreater
单Formula
xlLess
单Formula
xlGreaterEqual
单Formula
xlLessEqual
单Formula
xlNotEqual
单Formula
xlEqual
单Formula
Formula1:="0"
Formula2:="10000"
.IgnoreBlank
True
False
.InCellDropdown
True
False
.InputTitle
输入标题
.ErrorTitle
错误标题
.InputMessage
输入消息
.ErrorMessage
错误消息
.IMEMode
xlIMEModeNoControl
用于设置日本语输入
.ShowInput
True
False
.ShowError
True
False
.Type
.AddComment
添加批注
Text:=
.ClearComments
清除批注
.Comment
.Visible
True
批注可见
False
批注不可见
.Delete
删除批注
.Shape.AutoShapeType
msoShapeRoundedRectangle
圆角矩形
.HorizontalAlignment
xlGeneral
水平居中显示
xlHAlignRight
右对齐显示
xlHAlignLeft
左对齐显示
.VerticalAlignment
xlCenter
垂直居中显示
.WrapText
True
在object外包裹文字
False
不在object外包裹文字
.IndentLevel
缩进等级
.AddIndent
True
文本为自动缩进
False
文本不自动缩进
.ShrinkToFit
True
文本自动收缩以适应可用列宽
False
文本不自动收缩
.ReadingOrder
xlContext
.Orientation
文字的方向
.MergeCells
True
区域为被merge
False
区域不被merge
.Resize(RowSize, ColumnSize)
改变区域大小,并返回Range类型
.Formula
设定单元格的公式,如= "=a1+b1"
.FormulaArray
设定单元格的公式(可用array批量赋值),如= "=a1+b1"
也可以返回范围内的公式array
也可以直接赋值,如.Cells(1, 3) = "=a1+b1"
.FormulaR1C1
采用R1C1设定单元格的公式,如= "=SUM(R[-" & r - 1 & "]C:R[-1]C)"
.FormulaHidden
True
当工作表被保护时,公式被隐藏
False
当工作表被保护时,公式不被隐藏
.Sort
进行排序
Key1:=Range("A1")
Order1:=
xlDescending
xlAscending
Header:=
xlYes
xlNo
xlGuess
OrderCustom:=1
MatchCase:=False
Orientation:=xlTopToBottom
SortMethod:=xlPinYin
DataOption1:=xlSortNormal
.FormulaR1C1
用于设置或返回单元格区域的R1C1样式公式: -“R”代表行(Row)“C”代表列(Column) - 后面的数字代表具体的行号和列号
比如:Range("A2").FormulaR1C1 = "=SUM(R1C2:R1C3)"
.Find
What:=
要找寻的内容
After:=
ActiveCell
.AutoFilter
Field:=4, Criteria1:=">=3 & 天"
Field:=4表示第四列
Criteria1:=">=3 & 天"表示大于3天
.AdvancedFilter
从一个数据区域中筛选出特定条件的数据,并将结果复制到工作表的另一个位置
Action:=
xlFilterCopy
CriteriaRange:=
筛选条件区域
CopyToRange:=
筛选结果区域
Unique:=
True
筛选唯一值(忽略重复项)
False
不筛选唯一值
.Clear
不仅会清除单元格中的内容(值、公式等),还会删除单元格中的格式、字体、边框、条件格式、注释等所有属性,将单元格恢复到其最初的状态(通常是默认的格式)
.ClearContents
仅清除单元格区域中的内容(值、公式等),但不会更改单元格的格式、字体、边框、注释等属性
.Subtotal
建立分类汇总
GroupBy:=
以第几列作为分类标准
Function:=
xlSum
TotalList:=
Array(i)
第i列求和
Range("xxx") = "=xxx"
用于输入公式
.Locked
True
区域被保护
False
区域未被保护
.Precedents
引用区域,如公式引用的区域
.UnMerge
解除区域的merge
.BorderAround
设置外框区域的线条
Weight:=
xlMedium
.PrefixCharacter
获取前缀字符,如“'123”的'
.Consolidate
汇总不同区域
Sources:=Arr, Function:=xlSum, _ TopRow:=True, LeftColumn:=True
.Dependents
获得区域的从属单元格,比如C4在A1和B2的公式中被引用,则A1和B2为C4的从属单元格
.PivotTable
.SourceData
数据透视表数据来源
.PivotFields
.Count
字段的个数
.PivotFields(i)
.Name
第i个字段的名称
.PivotItems.Item("xxx").Visible
True
隐藏项目
False
不隐藏项目
.CurrentPage = "xxx"
更改页字段中的项目为xxx
.Orientation
用于改变字段行列位置
xlColumnField
xlRowField
.DataFields
.Count
值数据字段的个数
.DataFields(i)
.Name
第i个值数据字段的名称
.ColumnFields
.Count
行字段的个数
.ColumnFields(i)
.Name
第i个行字段的名称
.RowFields
.Count
列字段的个数
.RowFields(i)
.Name
第i个列字段的名称
.PageFields
.Count
页字段的个数
.PageFields(i)
.Name
第i个页字段的名称
.RowGrand
True
不隐藏列的汇总数据
False
隐藏列的汇总数据
.ColumnGrand
True
不隐藏列的汇总数据
False
隐藏列的汇总数据
.RefreshDate
显示数据透视表最新的数据更新日期
Cells
.Clear
清除工作表数据
.Resize
e.g. [a1].Resize(50, 2) e.g. [a2:a18] e.g. [a3,b2:c6,b8:d12]
Cells(x,y)
.EntireRow.RowHeight
.EntireRow.Interior.ColorIndex
.PageBreak
xlNone
没有分页
.End(xlUp)
包含源区域的区域结尾处的单元格
xlToLeft :向左移动,相当于在源区域按Ctrl+左方向键。 xlToRight:向右移动,相当于在源区域按Ctrl+右方向键。 xlUp:向上移动,相当于在源区域按Ctrl+上方向键。 xlDown:向下移动,相当于在源区域按Ctrl+下方向键。
e.g. Range("A65536").End(xlUp).Row
.Locked
True
False
ActiveCell/Cells(x,y)
Select之后变成ActiveCell
[A65535]
Range的一种表达方法,用括号括起来
.Address
ActiveCell的地址
.Offset(x, y)
.Value
.Select
.Interior
.Pattern
.PatternColorIndex
.Color
.Value
.Offset
.EntireRow
.Delete
.Insert
Shift:=
xlShiftDown
.Font
.AddComment
.Visible
.Text
.MergeArea
返回包含特定cell的merge区域
.Count
.Style
单元格样式
.Insert
插入
Shift:=
xlToRight
将单元格右移
xlDown
将单元格下移
控件(Controls)/窗体
UserForm
在UserForm的代码中写入End表示退出,可以放在关闭的CommandButton里面
.Show
(默认)模式窗体:窗体显示后将停显示之后的代码直到退出或隐藏此窗体,并且必须退出或隐藏此窗体后,才可以操作非此窗体的其他界面元素。
窗体名称.Show 1
无模式窗体:窗体显示后会继续执行程序里余下的语句,而其他的窗体或界面也可以进行操作。
窗体名称.Show 0
.Hide
隐藏窗口,也可以用Unload 窗体名称
.Width
.Height
.Width
.Height
.TakeFocusOnClick
点击时是否focus
标签(Label)
文本框(TextBox)
.Value
文本框的值
.SetFocus
将焦点设置到特定的控件上
.MaxLength
允许输入数据的最大长度
复合框(ComboBox)
.RowSource
复合框数据来源区域
.AddItem
添加复合框数据源,如:.AddItem "初一 1班"
.List
添加复合框数据源,如:.List = myArray
.Column
添加复合框数据源,如:.Column = myArray
.Value
复合框的选中的数据
.List(a, b)
复合框的指定b+1行a+1列的数据
.Column(a, b)
复合框的指定a+1行b+1列的数据
.ColumnCount
.ColumnHeads
True
False
.ListIndex
当前的index number(如通过click选择) = -1表示下拉列没有选择
.Clear
删除组合框内的所有项目
.RowSource = ""
删除组合框内的所有项目
.RemoveItem i
删除第i+1条项目
.MatchFound
输入是否可以在列表中找到,True or False
.DropDown
弹出项目列表
.ListStyle
项目的选择外观
fmListStyleOption
列表框(ListBox)
.RowSource
列表框数据来源区域
.AddItem
添加列表框数据源,如:.AddItem "初一 1班"
.List
添加列表框数据源,如:.List = myArray
.Column
添加列表框数据源,如:.Column = myArray
.Value
列表框的选中的数据
.List(a, b)
复合框的指定b+1行a+1列的数据
.Column(a, b)
复合框的指定a+1行b+1列的数据
.ListIndex
当前的index number(如通过click选择) = -1表示下拉列没有选择
.Clear
删除组合框内的所有项目
.RowSource = ""
删除组合框内的所有项目
.RemoveItem i
删除第i+1条项目
.ColumnCount
如为3代表数据有三列
.ColumnWidths
数据列宽度,如为"150;100;30"代表三列的分别宽度
.Width
.MultiSelect
fmMultiSelectMulti
按空格键或单击鼠标以选定列表中一个条目或取消选定
fmMultiSelectSingle
只可选择一个条目(默认)
fmMultiSelectMulti
按 Shift 并单击鼠标,或按 Shift 的同时按一个方向键, 将所选条目由前一项扩展到当前项。按 Ctrl 的同时单击鼠标可选定或取消选定。
.SetFocus
设置聚焦(默认项目上虚线)
复选框(CheckBox)
选项按钮(OptionButton)
.Value
True
False
切换按钮(ToggleButton)
框架(Frame)
命令按钮(CommandButton)
.Caption
TabStrip
多页(MultiPage)
滚动条(ScrollBar)
旋转按钮(SpinButton)
图像(Image)
事件(Event)
'事件中的Cancel: ' 默认为false,在完成事件内代码效果后,接着继续完成操作的后续效果。 ' 而为true时,在完成事件内代码效果后,终止当前操作的后续效果。 Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Cancel = True '禁用右键 End Sub
Worksheet
Activate
BeforeDelete
BeforeDoubleClick
BeforeRightClick
Calculate
Change
Deactivate
FollowHyperlink
LensGalleryRenderComplete
PivotTableAfterValueChange
PivotTableBeforeAllocateChanges
PivotTableBeforeCommitChanges
PivotTableBeforeDiscardChanges
PivotTableChangeSync
PivotTableUpdate
SelectionChange
TableUpdate
Workbook
Activate
AddinInstall
AddinUninstall
AfterRemoteChange
AfterSave
AfterXmlExport
AfterXmlImport
BeforeClose
BeforePrint
BeforeRemoteChange
BeforeSave
BeforeXmlExport
BeforeXmlImport
Deactivate
ModelChange
NewChart
NewSheet
Open
PivotTableCloseConnection
PivotTableOpenConnection
RowsetComplete
SheetActivate
SheetBeforeDelete
SheetBeforeDoubleClick
SheetBeforeRightClick
SheetCalculate
SheetChange
SheetDeactivate
SheetFollowHyperlink
SheetLensGalleryRenderComplete
SheetPivotTableAfterValueChange
SheetPivotTableBeforeAllocateChanges
SheetPivotTableBeforeCommitChanges
SheetPivotTableBeforeDiscardChanges
SheetPivotTableChangeSync
SheetPivotTableUpdate
SheetSelectionChange
SheetTableUpdate
Sync
WindowActivate
WindowDeactivate
WindowResize
UserForm
Activate
AddControl
BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Deactivate
Error
Initialize
Layout
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
QueryClose
RemoveControl
Resize
Scroll
Terminate
Zoom
标签控件(Label)
BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Error
MouseDown
MouseMove
MouseUp
文本框控件(TextBox)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
DblClick
DropButtonClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
复合框控件(ComboBox)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Click
DblClick
DropButtonClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
列表框控件(ListBox)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
复选框控件(CheckBox)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
选项按钮控件(OptionButton)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
切换按钮控件(ToggleButton)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
框架控件(Frame)
AddControl
BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
Layout
MouseDown
MouseMove
MouseUp
RemoveControl
Scroll
Zoom
命令按钮控件(CommandButton)
BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
TabStrip控件
BeforeDragOver
BeforeDropOrPaste
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
多页控件(MultiPage)
AddControl
BeforeDragOver
BeforeDropOrPaste
Change
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
Layout
MouseDown
MouseMove
MouseUp
RemoveControl
Scroll
Zoom
滚动条控件(ScrollBar)
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
Scroll
旋转按钮控件(SpinButton)
AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
SpinDown
SpinUp
图像控件(Image)
BeforeDragOver
BeforeDropOrPaste
Error
MouseDown
MouseMove
MouseUp
事件归总
Activate
被激活或选中时被触发
AddControl
控件插入到窗体、Frame或MultiPage的页面时被触发
AddinInstall
加载宏安装时被触发
AddinUninstall
加载宏卸载时被触发
AfterRemoteChange
合并远程用户的编辑之后被触发
AfterSave
保存之后被触发
AfterXmlExport
xml export之后被触发
AfterXmlImport
xml数据update或export之后被触发
AfterUpdate
当控件中的数据在整个用户界面中更改时被触发
BeforeClose
关闭之前被触发
BeforeDragOver
在正在执行拖放操作时被触发
BeforeDelete
删除之前被触发
BeforeDoubleClick
鼠标双击前被触发
BeforeDropOrPaste
在用户刚要将数据拖放或粘贴到对象上时被触发
BeforePrint
打印前被触发
BeforeRemoteChange
合并远程用户的编辑之前被触发
BeforeRightClick
鼠标右键点击前被触发
BeforeSave
保存之前被触发
BeforeUpdate
控件中的数据被改变之前
BeforeXmlExport
xml export之前被触发
BeforeXmlImport
xml数据update或export之前被触发
Calculate
计算完成后被触发
Change
发生变化后被触发
Click
按下并在一个对象上释放鼠标按钮时被触发
DblClick
指向物件然后按下两次鼠标按键时
DropButtonClick
控件下拉时候被触发
Deactivate
被取消激活或选中时被触发
Enter
在控件获得光标的时候被触发,与Exit事件相对应
Error
错误时被触发
Initialize
对象初始化时被触发
FollowHyperlink
单击任何超链接时被触发
KeyDown
按下键时被触发
KeyPress
按某个 ANSI 键时被触发
KeyUp
释放键时被触发
Layout
当窗体、Frame或MultiPage更改大小时被触发
LensGalleryRenderComplete
镜头库渲染完成后被触发
ModelChange
Excel数据模型改变时被触发
MouseDown
按下鼠标按键时被触发
MouseMove
鼠标指针位置改变时被触发
MouseUp
放开鼠标按键时被触发
NewChart
当新Chart被创建时被触发
NewSheet
当新Sheet被创建时被触发
Open
当Open时被触发
QueryClose
在UserForm关闭之前被触发
PivotTableAfterValueChange
PivotTableBeforeAllocateChanges
PivotTableBeforeCommitChanges
PivotTableBeforeDiscardChanges
PivotTableChangeSync
PivotTableCloseConnection
PivotTableOpenConnection
PivotTableUpdate
RowsetComplete
数据透视表操作事件
RemoveControl
Resize
当大小被改变时被触发
Scroll
当在滚动条内拖动滚动框时被触发
SelectionChange
选定区域发生更改时被触发
SpinDown
SpinDown按钮按下时被触发
SpinUp
SpinUp按钮按下时被触发
Sync
本地副本与服务器上的副本进行同步时被触发
TableUpdate
在工作表上更新了连接到数据模型的查询表之后被触发
Terminate
通过将引用对象的所有变量设置为Nothing或最后一次引用对象超出范围时被触发
Zoom
Zoom属性发生更改时被触发(缩放)
可直接调用函数(Function)
Language Reference - Function
UBound(arr)
一维数组的上界
LBound(arr)
一维数组的下界
UBound(arr, 2)
二维数组的上界
LBound(arr, 2)
二维数组的下界
Split
将一个文本按指定的分隔符分开,存放在一个数组变量里,e.g. Split(strFull, "-")
第一个参数:文本
第二个参数:分隔符
第三个参数:返回的子文本数量
第四个参数:比较模式
Join
将数组以指定字符分开,连成一个字符串,e.g. Join(arr, ",") 如不指定为空格
LCase
将字符串转换成小写
UCase
将字符串转换成大写
InStr
查找字符串是否包含关键词,返回位置
第一个参数:第几个出现
第二个参数:字符串
第三个参数:关键词
InStrRev
字符串包含关键词的位置(从最后面开始找),返回位置
第一个参数:被搜索的String
第二个参数:被搜索的关键词
Dir
返回一个与指定路径或文件模式相匹配的目录条目、文件或文件夹的名称,如:可用于返回指定文件夹中的文档
InputBox
第一个参数
对话框中出现的信息
第二个参数
对话框标题
第三个参数
默认的输入内容
Right
第一个参数
要提取的右侧字符
第二个参数
要提取的字符数量
Int(内置函数)
取不大于x的最大整数
Len
字符串或数字长度
IsNumeric
True
是数字
False
不是数字
IsDate
True
是日期
False
不是日期
IsArray
True
是数组
False
不是数组
IsObject
True
为对象
False
不为对象
IsEmpty
True
被初始化
False
未被初始化
IsError
True
表达式有错
False
表达式无错
如:IsError(Range("A1").Value)
=True
错误类型为Range("A1").Text,如#DIV/0!
=False
公示结果为Range("A1").Value
IsNull
True
为Null
False
不为Null
Date
返回日期
Time
返回当前系统时间
Now
返回日期和系统时间
MonthName
返回数值对应的月份string
WeekdayName
返回数值对应的星期string
CInt(内置函数)
将表达式转换为Integer(整型)数据类型
CStr(内置函数)
将Excel单元格中的值转换为字符串
CDate(内置函数)
将Excel单元格中的值转换为日期类型
CVar(内置函数)
将Excel单元格中的值转换为数值类型
Mid
返回String中间一部分
第一个参数
要截取的String
第二个参数
开始位置
第三个参数
截取的长度
String
重复次数的字符串
第一个参数
重复的次数
第二个参数
重复的字符串
Timer
VBA关键词,用于统计时间,可以赋值给变量
TimeValue
返回时间格式的值,如TimeValue("17:00:00")
MsgBox
第一个参数
信息内容
第二个参数 (MsgBoxStyle Enum)
多参数采用加号连接,如vbInformation + vbYesNo
vbInformation
信息标志,即!
vbQuestion
问题标志,即?
vbYesNo
=vbYes
点击Yes框
=vbNo
点击No框
第三个参数
MsgBox的标题
DoEvents
允许Excel在执行长时间运行的过程(如循环或复杂计算)时,能够处理其他事件,如用户界面更新、用户输入等。这对于防止Excel界面冻结或响应迟缓非常有用
CreateObject
("Scripting.Dictionary")
.Keys
.Items
.Add
key相当于字典中的关键词,item相当于对其的解释
Key:=
Item:=
.Exists("xxx")
是否存在xxx的关键词
.Remove("xxx")
去除xxx的关键词与对应条目
.RemoveAll
去除所有的关键词与对应条目
d.keys("a")="b" '修改关键字"a"为"b"
d.item("a")="b" '修改关键字"a"的item条目为"b"
d("a")="b" '修改关键字"a"的item条目为"b"
("Word.Application")
可用Application调用,也可用Object调用
dialog = myword.FileDialog (msoFileDialogFilePicker)
.Title
.Filters.Clear
.Filters.Add
.FilterIndex
.AllowMultiSelect
.Show
.SelectedItems(i)
.Documents.Add("xxx")
新建Word文档,并调用其Object
.SaveAs
.Close
.GoTo What:=wdGoToBookmark, name:="xxx"
去到标签处
.TypeText
输入文字
.PasteExcelTable
.Documents.Open("xxx")
Documents.Close
关闭文档
Documents(i)
.SaveAs
Filename:="xxx"
另存为
.Tables(i).Range
.Tables.Add
.Tables(1).Style
("InternetExplorer.Application")
用来发邮件
.Navigate "mailto:hhh@sohu.com"
.Quit
("Vbscript.Regexp")
正则表达式
.Global
Global属性:查找范围:true全部查找,false只查找第1个,默认false
.Pattern
Pattern属性:书写正则表达式,默认为""
.Pattern = "(VBA){2,}"
第二个出现的VBA
.Pattern = "经理|总裁|董事长"
“经理”或“总裁”或“董事长”
.Pattern = "(张|李).*(平|明)"
姓“张”或“李”,结尾是“平”或“明”
.Pattern = "^[A-Z]+\d+$"
首位分别为字母和数字的字符串
.Pattern = "(?=[川吉云粤])"
从左至右查找川或吉或云或粤的关键词
.Execute
对某个Range执行正则表达式的搜索
返回搜索的结果,如多次搜索则返回结果数组
.submatches(i)
.CompareMode
= 0 '0则区分大小写
= 1 '1则不区分大小写
.Count
项目数
.ignorecase
True
大小写区分
False
大小写不区分
.Replace
将正则表达式找到的关键词替换为目标词
第一个参数:字符串
第二个参数:目标词
元字符
\d 匹配一个数字字符。 \D 匹配一个非数字字符。 \w 匹配包括下划线的任何单词字符。"A-Za-z0-9_" \W 匹配任何非单词字符。 \s 匹配任何空白字符,包括空格、制表符、换页符等等。 \S 匹配任何非空白字符。 \b 匹配一个单词边界,也就是指单词和空格间的位置。 \B 匹配非单词边界。 \n 匹配一个换行符。 \r 匹配一个回车符。 \t 匹配一个制表符。 . 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符
元字符量词
? 匹配前面的子表达式零次或一次。 + 匹配前面的子表达式一次或多次。 * 匹配前面的子表达式零次或多次。 {n} n 是一个非负整数。匹配确定的 n 次。 {n,} n 是一个非负整数。至少匹配n 次。 {n,m} m 和 n 均为非负整数,其中n <= m。
'[]在中括号中选若干字符之一
'[xyz] 字符集合。匹配所包含的任意一个字符。 '[^xyz] 负值字符集合。匹配未包含的任意字符。 '[a-z] 字符范围。匹配指定范围内的任意字符。 '[^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。
如:"[a-zA-Z]"表示任意字符
如[、.]表示、或者.
首位锚定
'^ 匹配输入字符串的开始位置。 '$ 匹配输入字符串的结束位置。
零宽断言(光标的位置)
正向零宽断言 (?=...)
用于在匹配过程中指定一个位置,这个位置后面应该满足一定的条件(即断言)
负向零宽断言 (?!...)
用于指定某个位置不应该出现某个模式
常用正则表达式
^/d+$ //非负整数(正整数 + 0) ^[0-9]*[1-9][0-9]*$ //正整数 ^((-/d+)|(0+))$ //非正整数(负整数 + 0) ^-[0-9]*[1-9][0-9]*$ //负整数 ^-?/d+$ //整数 ^/d+(/./d+)?$ //非负浮点数(正浮点数 + 0) ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$ //正浮点数 ^((-/d+(/./d+)?)|(0+(/.0+)?))$ //非正浮点数(负浮点数 + 0) ^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //负浮点数 ^(-?/d+)(/./d+)?$ //浮点数 ^[A-Za-z]+$ //由26个英文字母组成的字符串 ^[A-Z]+$ //由26个英文字母的大写组成的字符串 [^a-z+$] '由26个英文字母的小写组成的字符串 [^A-Za-z0-9]+$ ‘由数字和26个英文字母组成的字符串 ^/w+$ //由数字、26个英文字母或者下划线组成的字符串 ^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$ //email地址 ^[a-zA-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/S*)?$ //url /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 ^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$ //Emil (d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)? //电话号码 ^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$ //IP地址 匹配中文字符的正则表达式: [^/u4e00-/u9fa5] 匹配双字节字符(包括汉字在内):[^/x00-/xff] 匹配空行的正则表达式:/n[/s| ]*/r 匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/ 匹配首尾空格的正则表达式:(^/s*)|(/s*$) 匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 匹配网址URL的正则表达式:^[a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:(/d{3}-|/d{4}-)?(/d{8}|/d{7})? 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$
("Excel.Sheet")
("Scripting.FileSystemObject")
.OpenTextFile(Filename:=xxx, IOMode:=ForReading)
.AtEndOfStream
是否到达末尾
.Read(i)
读取i个字符
.ReadLine
读取一行
.ReadAll
读取全部数据
.Write
.WriteBlankLines
.WriteLine
.SkipLine
.Close
.CreateTextFile(Filename:=xxx, OverWrite:=True)
创建文本文档
.GetDrive("C")
.DriveType
.TotalSize
.FreeSpace
.FileSystem
如:NTFS
.VolumeName
名称
.Drives
For Each ...
.DriveLetter
.GetFolder(path)
.SubFolders
For Each ...
.Name
.Size
.ShortName
.DateCreated
制作日
.DateLastAccessed
最后保存时间
.DateLastModified
最后修改时间
.Drive
Root磁盘名
.IsRootFolder
Root文件名
.Name
文件夹名
.ParentFolder
上级文件夹名
.Path
路径
.ShortName
DOS短名
.ShortPath
DOS路径
.Size
大小
.Type
类型
.CreateFolder(path)
.GetSpecialFolder(path)
SpecialFolder:=
SystemFolder
TemporaryFolder
WindowsFolder
.GetFile(path)
.Attributes
Normal
普通
ReadOnly
只读
Hidden
隐藏
System
系统
Directory
文件夹
Archive
存档
.OpenAsTextStream
打开为TextStream格式
.Name
文件名
.DateCreated
文件创建日期
.DateLastModified
文件修改日期
.DateLastAccessed
文件访问日期
.ParentFolder
文件保存路径
.FileExists(path)
True
False
.FolderExists(path)
True
False
.DriveExists
True
False
.GetBaseName(path)
文件基础名(没有后缀)
.GetExtensionName(path)
文件后缀名
.GetAttr(path)
vbReadOnly
只读文件夹
vbHidden
隐藏文件夹
vbArchive
最后一次修改的文件夹
vbDirectory
目录或文件夹
.GetDriveName(workbook name)
获取磁盘盘符
.DeleteFile
.DeleteFolder
Force:=
True
False
.CopyFolder
第一个参数:源头
第二个参数:目的地
OverWriteFiles:=
True
False
.MoveFolder
第一个参数:源头
第二个参数:目的地
.CopyFile
第一个参数:源头
第二个参数:目的地
OverWriteFiles:=
True
False
.MoveFile
第一个参数:源头
第二个参数:目的地
.GetTempName
生成随机字符串
.GetParentFolderName
获取上一级文件夹的路径
.GetFileName(path)
获取文件名
("Wscript.Network")
.EnumPrinterConnections
("Shell.Application")
("InternetExplorer.Application")
.Navigate
导航到某个URL
.Visible
.Busy
("Wscript.Shell")
.Exec
运行某程序,如.Exec("Notepad")
.Status
WshFinished
.Run
也可运行某程序,如.Run "Notepad", 1, True
.Terminate
终止程序
.Popup
跳出对话框
("Access.Application")
.Visible
.OpenCurrentDatabase
.DoCmd.OpenReport
.CloseCurrentDatabase
.Quit
IIf(expr, truepart, falsepart)
与If用法一致,也可以嵌套,只是非Else的语法
VBA.Format/Format (VBA函数,内置函数)
第一个参数:要Format的值,如Date
第二个参数:
Format格式
"0.000"
"0.00%"
"yyyy年mm月dd日"
"hh:nn:ss AM/PM"
"HH:nn:ss"
"$#,##0.00;($#,##0.00)"
"¥#,##0.00;(¥#,##0.00)"
"yyyy-mm-dd"
"yyyymm"
"hh:mm:ss AMPM"
"Long Date"
"Medium Time"
"Long Time"
"Short Time"
"General Date"
"Long Date"
"Medium Date"
"Short Date"
Year
获取日期格式的年份
Abs(内置函数)
取绝对值
Str(内置函数)
用于将数字转换为字符串
CSng(内置函数)
用于将表达式转换成 Single(单精度浮点型)数据类型
Round
用来将数值四舍五入到小数点后几位
第一个参数:原来的数据
第二个参数:要保留的小数位数
Val(内置函数)
用于将字符串参数的最开始部分转换成数字。如果字符串的开头无法转换为数字,则 Val 函数会停止转换并返回已经转换成功的数字部分;如果开头无法转换,则返回0
Trim
用于去除字符串左侧和右侧的空格
LTrim
用于去除字符串左侧的空格
RTrim
用于去除字符串右侧的空格
Array(a, b, c, ...)
返回数组变量,元素间用逗号加空格分割
Chr(内置函数)
用于返回与指定的ASCII码值相对应的字符
Format(内置函数)
Format(Date, "yyyy-mm-dd")
将Date现在的日期转换为年月日格式
TypeName
返回数据的类型,如"String"
Sqr
开方
CallByName
利用名字执行对象的方法
第一个参数:object名称
第二个参数:method名称
Asc
对应的字符ASCII代码,如Asc("0")
Val
将字符串转换为数字
StrConv
转换成某格式的String
判断全角字符
第一个参数:要转换的字符串String
第二个参数:转换类型,可用+连接
Shell
运行程序,如:Shell "Notepad.exe"
Environ
操作系统环境变量
Environ("SystemDrive")
系统盘
Environ("TEMP")
临时目录
Environ("windir")
Windows目录
Environ("SystemRoot")
系统目录
Environ("ProgramFiles")
程序文件目录
EOF(file num)
True
文件末尾
False
非文件末尾
LOF(file num)
文件的byte大小
Spc(i)
在Print中使用代表i个空格
Tab(i)
在Print中使用代表i个Tab
CurDir
返回当前的路径
Switch
类似Select-Case语句
如:Switch(CityName = "London", "English", CityName = "Rome", "Italian", CityName = "Paris", "French")
DateDiff
返回两个日期之间的实际天数差值
GetObject
获取对应的Object,如: Temp = ThisWorkbook.Path & "\数据.xlsx" Set Wb = GetObject(Temp)
DateSerial
根据年月日(year, month, day)返回Date类型
Year(Date)
返回Date对应的年
Month(Date)
返回Date对应的月
Weekday(Date)
返回Date对应的周几
DateValue()
返回Date类型,如:= DateValue("February 12, 1969")
DateAdd()
加上一段时间后的Date类型
QBColor()
返回颜色值
Choose()
用Index从后续数据中选择数据
第一个参数:index
后续参数:数据
Hex
返回十六进制数
TimeSerial
返回根据三个参数:hour, minute, and second的时间值
MsgBox
第一个参数
信息内容
第二个参数 (MsgBoxStyle Enum)
多参数采用加号连接,如vbInformation + vbYesNo
vbInformation
信息标志,即!
vbQuestion
问题标志,即?
vbYesNo
=vbYes
点击Yes框
=vbNo
点击No框
其他
第三个参数
MsgBox的标题
参考ojects
Language Reference - Objects
Err
.Raise
报运行时错
第一个参数:错误号码
第二个参数:错误来源的函数
第三个参数:错误描述
.Clear
清楚错误Handler
.Number
Error的number
.Description
Error的描述
其他
操作符Operators
Comparison operators
< (Less than)
<= (Less than or equal to)
> (Greater than)
>= (Greater than or equal to)
= (Equal to)
<> (Not equal to)
*
Multiply operators
^
Power of an exponent
+
Sum operators
&
Concatenation operators
=
Assign operators
-
Minus operators
/
Divide operators (return a floating-point)
\
Divide operators (return an integer result)
AddressOf
返回过程(如Function)的地址
And
逻辑AND
Eqv
逻辑等于判断
Imp
Is
判断Object是否相同
Like
根据pattern模糊判断,如m.Value Like "*李*"
注意半角全角
Mod
返回余数
Not
取反
Or
逻辑OR
XOR
逻辑XOR
Statements
Kill
删除某个路径的文件
RmDir
删除某个路径的文件夹
Randomize
对Rnd函数使用新的Seed
SetAttr
设置文件的属性
vbReadOnly
只读
Name
重命名文件、文件夹
注意:还附带有保存到不同文件夹的功能
ChDrive
更改当前驱动器名称
MkDir
创建目录
FileCopy
第一个参数:源头
第二个参数:目的地
Beep
从电脑里发出哔的声音
ChDir
用于改变当前目录
SendKeys
给应用(如打开文件窗口)发送关键词
Sub
Public Sub
Private Sub
Exit Sub
End Sub
Function
与Sub的区别是Function有返回值
Function返回值为Function Name
可以直接在cell里面=Function Name进行调用
其他参考Sub
Const
和Dim并列,定义常数,避免被修改
If
If xxx Then ... :...
If xxx Then ... ElseIf xxx Then ... End If
If xxx And xxx Then ...
Dim
若不声明变量的数据类型,则定义的变量将被指定为Variant
数据类型简写(如:Dim b%)
Integer 整型 %
Single 单精度 !
Double 双精度 #
Long 长整型 &
String 字符型 $
Currency 货币型 @
Redim
重新定义
Redim Preserve
在保留原数据的情况下重新定义,如数组
可声明类型为VBA的类型,如:Dim order As XlSortOrder
可用于与控件结合使用
Do...Loop
Do... Exit Do ...Loop
Do While/Until... ...Loop
Do While... Exit Do ...Loop
Do Until... ...Loop
Do Until... ...Loop
Exit Do
Do ... Loop While ...
Do ... Exit Do ... Loop While ...
Select Case
Select Case
Case "xxx"
Select Case xxx Case 1 To 499
Select Case xxx Case Is < 500
Is为关键字
Select Case True Case myStr Like "*A*"
Like运算符
...
End Select
Foreach ... In ...
Foreach ... In ... ... Next
For ... Next
For rng = xxx To xxx ... Next
For rng = xxx To xxx Step xxx ... Next
With
With xxx .xxx End With
Call
调用Sub或者Function(调用Function时候返回值被忽略)
GoTo
跳转到程序中的特定行
On Error
Resume Next
GoTo line
GoTo 0
Me
关键词,代表当前对象的实例
特殊符号
代码换行
_
代码注释
'
文本要用英语引号引起来
""
日期要用#号引起来
##
字符串拼接
&
+
用于引用Worksheet地址
#
如"#单价!"
特殊常数
vbCr
Chr(13)
回车符。
vbLf
Chr(10)
换行符。
vbCrLf
Chr(13) & Chr(10)
回车符和换行符。
vbNewLine
Chr(13) & Chr(10)或Chr(10)
平台指定的新行字符,适用于任何平台。
vbNullChar
Chr(0)
ASCII码为0的字符。
vbNullString
-
值为0的字符串,但和""不同。
vbTab
Chr(9)
水平附签。
传参
按值传递(ByVal)
将主程序的值(副本一份)给子过程,过程对副本操作,主程序输出的仍是原值。如果需要在过程中修改原始数据并让主程序看到这些修改,需要在过程中使用其他方式(如通过返回值或全局变量)来实现。
按引用传递(ByRef):
默认方式。主程序直接将数据交给子过程,子过程修改的是数据的实际地址,因此主程序也能看到这些修改。
输入输出
Example: Open myFileName For Binary Access Write Lock Write As #myFNo Close #myFNo
以读写方式打开文件
Open FullName For Output As #1
输出到文件
Print #1, string
关闭文件
Close #1
变量名的命名规则
'以字母开头 '不能用保留字 '不超过 255 个字符。 '同一范围内必须是唯一
赋值
=
变量、对象赋值
:=
子主题
变量的作用域
(1)如果在一个过程中包含了一个Dim或Static语句,此时声明的变量作用域为此过程,即本地变量。
(2)如果在一个模块的第一个过程之前包含了Dim或Private语句,此时声明的变量作用域为此模块里所有的过程,也就是在此模块里所有的过程都可以使用它,即模块作用域下的变量;
(3)如果在一个模块的第一个过程之前包含了Public语名,此时声明的变量作用域为所有模块,即公有变量。
Option 语句用于设置影响整个模块或过程的编译选项
Option Explicit:这是最常见的Option语句之一。当在模块顶部使用Option Explicit时,它要求在该模块中显式声明所有变量。这意味着,如果在代码中使用了未声明的变量,VBA将在编译时报错,而不是在运行时产生难以追踪的错误。这有助于避免拼写错误和意外的变量重用。
Option Base:这个语句用于设置数组的默认下界。默认情况下,VBA数组的下界是0。但是,使用Option Base 1可以将默认下界更改为1,这在处理与Excel工作表数据交互时特别有用,因为Excel的单元格引用(如A1)通常从1开始。然而,请注意,Option Base语句只影响紧随其后的数组声明,而不影响已经使用Dim语句明确指定下界的数组。
Option Compare:这个语句用于设置字符串比较的方法。Option Compare Binary按字节顺序比较字符串(区分大小写),而Option Compare Text则按文本排序顺序比较字符串(不区分大小写,但受区域设置影响)。默认情况下,Option Compare设置为Binary或Text取决于区域设置。
Option Private Module:这个语句用于将模块中的所有过程(子程序和函数)声明为私有,即它们只能在该模块内部被调用,而不能从模块外部访问。这有助于封装和隐藏模块的内部实现细节。
颜色
ColorIndex
QBColor
其他
优化代码
关闭屏幕更新
Application.ScreenUpdating = False
使用工作表函数
使用With语句引用对象
简化代码
没有包含的:VBE;和其他Office的互动;数据库;类;