什么是VBA,它有什么作用
VBA是一种编程语言,是VB语言的分支
A 实现Excel中没有提供的功能
B 提高运行速度
C 编写自定义函数
D 实现自动化功能
F 通过插入窗体做小型管理软件
前提准备
- 调出开发工具
![图片[1]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090004328-VBA合并工作簿-1-1024x829.png)
- 启用所有的宏
![图片[2]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090008161-VBA合并工作簿-2-1024x772.png)
- 如何进入VBA编写界面
快捷键:ALT+F11
开发工具——Visual Basic
![图片[3]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090017383-VBA合并工作簿-3-1024x210.png)
- 工作表——鼠标右键——查看代码
![图片[4]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090022396-VBA合并工作簿-4.png)
编写格式
1. 框架
![图片[5]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090028369-VBA合并工作簿-5-1024x554.png)
- 运行:快捷键:F5
- 如何保存代码:启用宏的工作簿(后缀名xlsm)
![图片[6]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090035342-VBA合并工作簿-6-1024x723.png)
录制宏
![图片[7]-VBA合并工作簿-一鱼](https://yiyu0.cn/wp-content/uploads/2024/12/20241203090038172-VBA合并工作簿-7.png)
什么是变量?
- 什么是变量
变量是一个自定义名称的储存单位,变量是一个载体
- 为什么要使用变量
简化输入,储存不确定的数据
- 变量的数据类型
3.1 变量的数据类型 | |||
数据类型 | 储存空间 | 范围 | 简写 |
byte | 1个字节 | 0到255 | |
Integer | 2个字节 | -32768到32767 | % |
Long | 4个字节 | -2147483648到2147483647 | & |
String | 10个字节加字符串长度 | 0到大约20亿 | $ |
Date | 8个字节 | 100年1月1日到9999年12月31日 | |
Variant | 16个字节或22个字节 | 变体型 | |
3.2声明变量的数据类型 | |||
声明的格式:dim 变量名 as 数据类型 | |||
dim n as interger | |||
简写:dim n% | |||
声明多个变量用逗号隔开:Dim s&, n%, x% | |||
3.3为什么要声明变量? | |||
提升效率 | |||
- 常见对象的表达方法
对象的表达方法 | |
excel有数百个对象,我们先记住一些常用对象 | |
工作簿、工作表、单元格 | |
Workbooks (“工作簿名”) | |
ActiveWorkbook 活动工作簿 | |
ThisWorkBook ‘代码所在工作簿 | |
Sheets(n) 第n个工作表 | 按工作表的顺序 |
Sheetn 第n个工作表 | 按系统工作表名 |
Sheets(“工作表名”) | 按工作表名称 |
ActiveSheet 活动工作表 | |
Range (“单元格地址”) | 一个单元格,一行,一列,一个区域 |
Cells(行,列) | |
[A1]单元格简写 | |
Activecell 活动单元格 | |
Selection 选择的区域 |
获取VBA功能
一、Excel的VBA功能
- 集成方式:Excel直接集成了VBA功能,用户无需额外安装即可使用。
- 功能特点:VBA是一种在Excel中广泛使用的宏语言,允许用户编写代码来自动执行一系列任务,如数据处理、格式设置等,从而提高工作效率。
- 使用方式:用户可以通过切换到“开发工具”选项卡并点击“Visual Basic”来打开VBA界面,进行代码的编写和调试。
二、WPS的VBA功能获取方式
使用方式:安装VBA插件或购买商业版后,用户可以在WPS的开发工具界面中看到“VB编辑器”选项,点击即可进入VBA界面进行代码的编写和调试。
默认状态:WPS默认不集成VBA功能,因此在WPS的开发工具界面中,“VB编辑器”通常是灰色的,表明VBA功能不可用。
获取方式:
安装VBA插件:用户可以从WPS官方网站或可靠的第三方来源下载VBA插件的安装包,并按照屏幕上的提示进行安装。安装完成后,需要重新启动WPS Office,此时VBA功能应该已经可用。
购买WPS商业版:WPS商业版已经内置了VBA功能,用户可以直接购买商业版来使用VBA功能。
合并工作簿
- 合并工作簿AI
Sub 合并工作簿AI()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
If ss <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
If ThisWorkbook.Sheets(1).[a1] = "" Then
wb.Sheets(1).Cells.Copy ThisWorkbook.Sheets(1).[a1]
Else
wb.Sheets(1).Range("a1").CurrentRegion.Offset(1, 0).Copy z
End If
Application.DisplayAlerts = False '警告窗口默认不保存
wb.Close
Application.DisplayAlerts = True '提示功能打开
End If
gzb = gzb + 1
h = Range("a1").CurrentRegion.Rows.Count
Set z = Cells(h + 1, 1)
ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
- 合并工作簿AO
Sub 合并工作簿AO()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
If ss <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
If ThisWorkbook.Sheets(2).[a1] = "" Then
wb.Sheets(2).Cells.Copy ThisWorkbook.Sheets(2).[a1]
Else
wb.Sheets(2).Range("a1").CurrentRegion.Offset(1, 0).Copy z
End If
Application.DisplayAlerts = False '警告窗口默认不保存
wb.Close
Application.DisplayAlerts = True '提示功能打开
End If
gzb = gzb + 1
h = Range("a1").CurrentRegion.Rows.Count
Set z = Cells(h + 1, 1)
ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
- 合并工作簿DI
Sub 合并工作簿DI()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
If ss <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
If ThisWorkbook.Sheets(3).[a1] = "" Then
wb.Sheets(3).Cells.Copy ThisWorkbook.Sheets(3).[a1]
Else
wb.Sheets(3).Range("a1").CurrentRegion.Offset(1, 0).Copy z
End If
Application.DisplayAlerts = False '警告窗口默认不保存
wb.Close
Application.DisplayAlerts = True '提示功能打开
End If
gzb = gzb + 1
h = Range("a1").CurrentRegion.Rows.Count
Set z = Cells(h + 1, 1)
ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
- 合并工作簿DO
Sub 合并工作簿DO()
Dim ss$, mx As Worksheet, wb As Workbook, h%, z As Range, gzb '定义变量
t = Timer '把当前代码的时间赋值给t,t没有声明变量,默认变体型,也就是它可以存储任何类型的信息
Cells.Clear '清除数据
gzb = 0
Application.ScreenUpdating = False '关闭屏幕刷新
Set mx = ThisWorkbook.ActiveSheet '赋值当前工作表
ss = Dir(ThisWorkbook.Path & "\") '赋值工作簿路径
Do 'DO loop中间的代吗就是要循环的语句
If ss <> ThisWorkbook.Name Then
Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & ss)
If ThisWorkbook.Sheets(4).[a1] = "" Then
wb.Sheets(4).Cells.Copy ThisWorkbook.Sheets(4).[a1]
Else
wb.Sheets(4).Range("a1").CurrentRegion.Offset(1, 0).Copy z
End If
Application.DisplayAlerts = False '警告窗口默认不保存
wb.Close
Application.DisplayAlerts = True '提示功能打开
End If
gzb = gzb + 1
h = Range("a1").CurrentRegion.Rows.Count
Set z = Cells(h + 1, 1)
ss = Dir '(*返回同一个目录的下一个文件*)
Loop Until ss = "" 'DO loop中间的代吗就是要循环的语句
mx.Columns.AutoFit '自动调整合并工作表的列宽
Rows("1:1").Select
Selection.AutoFilter
Application.ScreenUpdating = True '打开屏幕刷新
MsgBox "合并" & gzb & "张工作表格用时" & Timer - t & "秒" '弹窗显示统计时间
End Sub
感谢您的来访,获取更多精彩文章请收藏本站。

供学习和研究使用,请在下载后24小时内删除
购买前可以联系作者确认资源信息,防止交易矛盾
© 版权声明
THE END
暂无评论内容