这里写自定义目录标题
- 来源
-
- 入门
-
- VBA能干什么
- 学习VBA基础
- VBA代码编写规范
- VBA代码编写基本操作
- 宏和VBA的关系
- 按钮:开发工具-插入-控件
- 换行
- F8逐句运行,视图-本地窗口:可以看到变量
- Excel录像机-宏
- 变量
- 对象
- 属性,灰色的标
- 方法,绿色的标
- If语句
- For循环语句
- End 获取数据边界
- Row 和Rows
- 表中有空单元格情况下的边界获取Cells(Rows.Count."f").End(xlUp).Row
- Usedrange 工作表的所用区域(获取行号列号的方法)
- CurrentRegion 单元格所在的区域
- For Each 循环对象集合
- Offset 偏移
- Resize属性
- Exit
- DO LOOP
- GOTO
- Do While 和Until
- 在VBA中使用工作表函数
- VBA随机函数
- 随机数凑数
- 代码字典
- FIND 查找方法
来源
入门
VBA能干什么
基本的办公自动化功能,解决日常中的重复性工作
Exp:数据整理、批量处理
学习VBA基础
对Excel有一定了解,熟悉基本的函数
(1)VBA编写前提准备
①调出开发工具
【文件】-【选项】-【自定义功能区】勾选【开发工具】
②启用所有的宏
【文件】-【选项】-【信任中心】-【宏设置】-【启用所有的宏】
(2)进入VBA编辑界面
①快捷键 Alt+F11
②【开发工具】-【Visual Basic】
③选中下放栏工作表-右键-查看代码、
(3)调整VBA编辑窗口
①调整代码字体格式
编辑窗口【工具】-【选项】-【编辑器格式】
VBA代码编写规范
①Sub 过程名称()
过程名称不能使用保留字(如 Sub Input(),运行会报错)
End Sub 结果子过程
VBA代码编写基本操作
①保存代码
【文件】-【另存为】-【保存类型】-启用宏的工作簿.xlsm
②注释
写完代码后进行注释,方便理解
Exp:'我是一串注释
【设置注释快】-选中后批量注释
【解除注释】-选中后解除注释
宏和VBA的关系
宏:通过录制实现机械性的功能(录制操作转换为代码)
VBA:通过代码实现更复杂的功能
按钮:开发工具-插入-控件
换行
空格+下划线
单行代码太长时,为了方便理解美观进行断行
F8逐句运行,视图-本地窗口:可以看到变量
②调出本地窗口
【视图】-【本地窗口】 同时查看运行情况
Excel录像机-宏
(1)录制宏
【开发工具】-【录制宏】/【停止录制】
宏的录制经常出现冗余代码,一般不使用
变量
变量是一个自定义名称的储存单位
变量的数据类型
Dim n as 变量类型
当数据量较大时,可以声明变量类型解决运行时间
对象
工作簿对象(当前EXCEL)
WorkBooks(“工作簿名”)
ActiveWorkBook 活动工作簿(当前工作簿)
活动工作簿:正在打开的工作簿
ThisWorkBook 代码所在的工作簿
Exp:
[b1]=AcitiveWorkbooks.Name ' 在b1单元格中写入当前工作簿的名称
工作表对象
Sheets(n) 按对象顺序确定的第n个工作表
Sheetn 按系统工作表名确定的工作簿
Sheets(“工作表名”) 按工作表名称确定的工作簿
Exp:
Sheets(3) '表示的是VBA对象中的排行的第三个工作簿
Sheet3 '表示的是工作簿中对象的名称
sheets("表名”) '表示的是工作簿中名称为“表名”的工作表
[b1]=Sheet3.Name
[b1]=Sheet3.Delete
MsgBox Sheets(3).Name 弹窗提示第三个工作表的名称
Sheets("老吴 ").Delete 删除名称为“老吴”的工作表
单元格对象
Range(“单元格地址”)
Cells(行,列)
[A1] 单元格简写
Range("c11") = 1
Range("c11:e15") = 1
Range("c:c").Select ' 选C列
Range("10:10").Select ' 选10行
Cells(11, 3) = 2
[c11] = 3
ActiveCell.Interior.ColorIndex = 3 ' 对活动单元格进行修改,颜色改为红色
属性,灰色的标
对象.属性
Range(“单元格”).value 单元格的值
workbooks(“工作表”).工作表的路径
sheets.count 工作表的数量
sheets(“工作表”).Name 工作表名称
Exp:sheets(“sheet1”).Name 工作表名称=“快学Excel”-将“快学Excel”赋值为shee1工作的名称
ActiceCell.Adress 活动单元格的位置
Range(“a1”).Interior.ColorIndex 单元格颜色
Sub test()
MsgBox Range("al").Value
MsgBox Workbooks("对象的属性1-7.xlsm").Path
MsgBox sheets.count
Sheets.CountSheets("sheet1").Name ="快学excel"
MsgBox Range("a1").Interior.ColorIndex
ThisWorkbook.Sheets(3).Range("al:b10").Interior. ColorIndex = 56
End Sub
方法,绿色的标
工作簿
Sub test()
Workbook.Add ' 新增工作簿
WorkBook.Open("C:\Users\10025\Desktop\日报.xlsx") ' 打开工作簿
a=Workbook.Path
Workbooks.Open(a & "\" & "日报.xlsx") ' 打开当前工作簿当前位置下名称为“日报”的工作簿
WorkBook.Open(ThisWorkBook.Path & "\" & "日报.xlsx") '打开当前工作簿位置下名称为“日报”的工作簿
ActiveWorkbook.Close ' 关闭活动工作簿
Workbook.Add.Name="快学excel" ' 新增工作簿并命名为“快学excel”
ThisWorkbook.Sheets("工作表").Copy ActiveWorkbook.Sheets(1)' 将当前工作簿中“工作表”工作表的内容复制到活动工作表的sheet1工作表中
End Sub
单元格
Range("b1").Activate ' 选中单元格
Range("a1").Copy[b1] ' 复制单元格,带格式
' 纯文本粘贴,方式1