VBA基础
对象 在Excel VBA中,指的就是:工作薄、工作表、单元格、图表、透视图。 属性: 指对象所具有的特性。 方法: 实际上就是对对象的操作,他是一种动作,一种行为。
变量: 在定义之后了还能再次赋值 格式: Dim 变量 As 变量类型 = 数值 [let] 变量 = 变量值 set obj = 对象 静态变量Static: 用法:Static 变量 As 类型名 = 数值 PS: VBA 允许使用未定义的变量,默认变量是变体变量(Variant) Option Explicit ,规定变量必须显式声明,才能使用
常量 定义Const,用法:Const 常量 As 类型名 = 数值
访问权限定义 Public,Private
Dim a As Integer 等同于 Dim a% Dim a As Integer, b As Single 等同于 Dim a%, b!
If类: If (判断句) Then (操作) If (判断句) Then (操作) End If If (判断句) Then (操作) Else (操作) End If If (判断句) Then (操作) ElseIf (判断) Then (操作) Else (操作) End If IIf ([判断], [真操作],[假操作]) PS:可以嵌套 IIf ([判断], IIf(,),[假操作]) Select类:
Select Case (值) Case Is(值1) (操作) Case Else(值2) (操作) End Select PS:不用Break,case匹配到后执行完毕直接跳到EndSelectApplication.DispalyAlerts = false/true
Debug.Print
<Key,Item> 方法:Add, Keys, Items, Exists, Remove, RemoveAll 属性:Count, Key,Item, CompareMode Key关键字类型 速度:纯数字>纯文本>>>文本/数值混合型
Dim d As Object Set d = CreateObject("Scripting.Dictionary") d.add "a", "Example1" d.add "b", 9 'add重复Key会报错 d("b") = 7 '赋值操作,直接覆盖,不报错 d.Item("b") = 7 '等同于赋值 d.Key("a") = "aa" '替换Key值更改Key值比较实用的方式:CompareMode = 0(二进制)/1(文本)/2(数据库)
Workbooks表示当前打开的工作簿集合 名称表示法: Workbooks(“名称”) 索引号表示法:目录中的第几个 Workbooks.Count Workbooks(2) 窗口表示法:office excel打开的第几个 Windows.Count Windows(1) 当前工作簿:代码所在的工作簿 ThisWorkbook.Name 活动工作簿:被激活的工作簿,正在被使用的工作簿 ActiveWorkbook.Name
workbook对象中,有一个SHEET集合,成员是 worksheet或chart对象 Worksheets仅仅指的是工作表,而sheets包含图表、工作表、宏表等 工作表名称: Worksheets(“工作表表名”).Name Sheets(“图表表名”).Name 索引号表示法: Worksheets(index).Name Sheets(index).Name 直接取工作代码法: Sheet1.Name '工程下名称为Sheet1的对象 活动工作表: ActiveSheet.Name '激活的工作表 工作表集合应用:Sheets 与 Worksheets 区别
单元格 是Excel中最小的一个单位(工作簿、工作表、行、列、单元格) 单元格数量 = 行数:rows(B:B) * 列数 columns(2:2) 单元格容量:32767个字符
Range 对象 代表某一单元格、某一行、某一列、某一选定区域 Range(“文本型装单元格地址”) Range(“a1”).Select 单元格 Range(“a:a”).Select 列 Range(“1:3”).Select 行 Range(“a1:b10”).Select 相邻区域 等同于 Range(“a1”,“b10”) '变化写法1 Range(Range(“a1”),(Range(“b10”)) '变化写法2 Range(“a1:d7,c4:e8”).Select 合并选 Range(“a1:d7 c4:e8”).Select 交选
更多变化写法: 参照位置,相对引用法,相对位置 Range(“b2,d4”).Range(“a1”).Select 嵌套Cell Range(Cells(1,2), Cell(4,4)) 地址可以支持变量 Range(“a” & i) Range(“c3:e5”)(2) '从左到右,从上到下对区域单元格编号 PS:超出区域会向下拓展行 Range(“c3:e5”)(2,3) '区域相对行列坐标 动态获取单元格对象,会经常做这样的操作
属性: NumberFormatLocal '单元格格式,可自定义格式 Font '是一个对象,包含字体颜色大小、字号等 (Name,zise,Bold,Color等属性可以设置) Interrior '代表Range对象的内部,用的比较多的是它的颜色 Interrior.Color '设置底纹填充颜色 Interrior.ColorIndex = 1-56 '56中颜色 索引颜色 Interrior.Color = QBColor(0-15) '16种颜色 早期颜色值 Interrior.Color = RGB(,) 'RGB颜色,三原色值 可以直接用数字 MergeArea '返回合并的Range单元格 Comment '批注对象,单元格批注,没有批注会是Nothing Comment.Visible '是否显示 Comment.Shape.width/height/Fill '批注属性
操作: ClearFormats '清除单元格格式 Clear '清除内容及格式 PasteSpecial '选择粘贴,从剪贴板粘贴到指定区域, Cut '区域1剪切到区域2 Copy '区域1复制到区域2 Merge '合并单元格 UnMerge '拆分单元格 AddComment.Text “” '增加批注 ClearComments '删除批注 Activate '激活单元格 Offset(a,b) '偏移的行数列数的等同大小区域 Currentregion ’该对象所在的Range区域,区别 Resize(a,b) '调整Range对象,拓展成a行b列的Range对象 EntireRow '指定区域的整行或者多行,Range对象 EntireColumn '指定区域的整列或多列,Range对象 SpecialCells(Type,Vale) '指定类型和值匹配的所有单元格Range对象 Find(,…) '查找,参数很多,可以找文档细看 End(LRUD) '返回区域尾端单元格,参数上下左右
Range没有指定工作表,会默认为当前活动的工作表 Range只对工作表对象中使用,不能对图表等其他表对象使用 Range的Row、Column属性,指区域内左上角的行列号
Selection表示为选中的区域,一个Rang对象 Worksheet.UsedRange返回已经被使用的区域,最小长方形区域 如果设置了格式,也会被认定为已使用的区域;都没使用则定位到a1单元格
Cells单元格 Cells表示工作表中所有单元格集合 集合Cells中定位 格式Cells(行号,列号) Cells(3,4) 等同于 Cells(3,“d”) 参照Range定位 Range(“b3,f11”).Cells(2,2) Range(“b3,f11”).Cells(6) 单元格简写:使用中括号 : [a3] '不用双引号 [b2:c6] [b2:c6].Item(3) 'Item必须写 Range(“b2:c6”)(3) 'Item被省略 [b2:c6].Cells(3) 活动单元格: activecell 激活单元格: cell对象.Activat
单元格属性: 值 Value '实际是什么就是什么 值 Text '看到什么就是什么 (单区域可以省去Value赋值,对区域必须带上Value) 地址 Address(1, 1) '地址绝对引用 赋值 = '区域2等于区域1的值,必须用.Value属性,会清除格式
行列: 列: Columns(1) Columns(“a”) Columns(“c:e”) '多列不能用数字表示,必须用字母 行: Rows(1) Rows(“2”) Rows(“3:4”) Range(“2:4”) 等同于 [2:4] Range(“a:b”) 等同于 [a:b] 属性: Rows(2).Insert '第二行上边插入一行 Rows(1).Delete '删除第一行
Application操作单元格相关方法
Union 单元格并集 多个区域合并用于单元格连接 Rnage可以完成多区域引用,但是文本地址有256长度限制 Intersect 单元格交集 多个区域相交区域,没有交集返回Nothing Range.Copy Sheet.Paste(Destination,Link) 单元格复制,工作表粘贴
Shapes 图形对象,指工作表所有Shape对象集合 Shape 一个图片、形状、图表、按钮等都是一个Shape对象 常用属性: Name 名称 Type 图形类型,有一个int表示不同的类型 Top 顶端坐标 Left 左端坐标 Width 宽度 Height 高度 操作: Shapes.AddPicture(…) '添加图片对象,参数*7必填 shape.Delete '删除图形对象