VBA(Visual Basic for Application) 是Visual Basic的一种宏语言,主要用来扩展MicroSoft Office Excel软件的应用程序功能。
VBA学习交流网址:http://www.excelhome.net/
《excel_VBA基础入门》:
https://vdisk.weibo.com/s/dE3D00COBMN#_loginLayer_1576143430619
VBA有多强大:https://www.zhihu.com/question/318065326/answer/799460430
详细的VBA基本操作已经在大神编写的《excel_VBA基础入门》中说明的非常详细了,下面就只简单讲解一下常用的相关操作和功能的实现。
Alt + F8 打开宏菜单
Alf + F11 打开VBE(VBA编辑器)
文件 -> 选项
自定义功能区 -> 勾选“开发工具” -> 确定
开发工具 -> 插入 -> 按钮
拖拽即可绘制一个按钮,弹出宏菜单窗口,可以修改宏命名,确定
右键按钮 -> 指定宏
点击新建,打开VBE(VBA编辑器)
输入如下内容
MsgBox "您点击了按钮"
然后去Excel中点击按钮,效果如下:
恭喜,您已完成了您的第一个VBA编程
在创建按钮后,输入的
MsgBox "您点击了按钮"
就是VBA的其中一个语法——弹出提示框语法
下面我们将介绍VBA的其他常用语法
**数据类型 ** | 存储空间大小 | 范围 |
---|---|---|
Byte | 1 个字节 | 0 到 255 |
Boolean | 2 个字节 | True 或 False |
Integer | 2 个字节 | -32,768 到 32,767 |
Long | 4 个字节 | -2,147,483,648 到 2,147,483,647 |
Single (单精度浮点型) | 4 个字节 | 负数时从 -3.402823E38 到 -1.401298E-45;正数时从 1.401298E-45 到 3.402823E38 |
Double (双精度浮点型) | 8 个字节 | 负数时从 -1.79769313486232E308到-4.94065645841247E-324;正数时从4.94065645841247E-324 到 1.79769313486232E308 |
Currency (变比整型) | 8 个字节 | 从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807 |
Decimal | 14 个字节 | 非常大 |
Date | 8 个字节 | 100 年 1 月 1 日 到 9999 年 12 月 31 日 |
Object | 4 个字节 | 任何 Object 引用 |
String (变长) | 10 字节加字符串长度 | 0 到大约 20 亿 |
String(定长) | 字符串长度 | 1 到大约 65,400 |
Variant(数字) | 16 个字节 | 任何数字值,最大可达 Double 的范围 |
Variant(字符) | 22 个字节加字符串长度 | 与变长 String 有相同的范围 |
用户自定义 | 所有元素所需数目 | 每个元素的范围与它本身的数据类型的范围相同。 |
Dim 变量名 As 数据类型
修饰符 | 说明 |
---|---|
Dim/Static | 本地变量 |
Dim/Private | 模块作用域下的变量 |
Dim/Public | 共有变量 |
其中Dim可以省略,
举个栗子:
Sub 按钮1_Click()
A = "您点击了按钮"
B = #12/21/2019#
MsgBox "A: " & A & Chr(13) & "B: " & B
End Sub
补充:
VBA中使用**&**连接字符串或其他类型
Chr(13)代表的是ASCII编码中的换行符
时间类型必须使用**#**包起来
Const 常量名 As 数据类型 = 常量的值
Dim/Public 数组名(a to b) as 数据类型
举个栗子
Sub 按钮1_Click()
Const length As Integer = 5
Dim arr(length) As Integer
arr(0) = 1
arr(1) = 10
Dim str As String
For i = 0 To 5
str = str & arr(i) & ", "
Next
MsgBox "str: " & str
End Sub
补充:
1.VBA不仅可以定义一维数组,还可以定义二维、三维。。。
2.VBA中数组的长度会比你定义的要多一位
3.数组不能越界
单引号(’)
If 逻辑表达式 1 Then
语句块 1
ElseIf 逻辑表达式 2 Then
语句块 2
ElseIf 逻辑表达式 3Then
语句块 3 …
Else
语句块 n
End If
Select Case 测试表达式
Case 条件表达式 1
语句块 1
Case 条件表达式 2
语句块 2
Case 条件表达式 3
语句块 3
......
Case 条件表达式 n
语句块 n
Case Else
语句块 Else
End Select
举个栗子
Sub 按钮1_Click()
If [a1].Value = "" Then
MsgBox "A1 单元格没有输入数字。"
Exit Sub ' 退出程序
End If
Select Case [a1].Value
Case 0 To 29
MsgBox "差"
Case 30 To 59
MsgBox "不及格"
Case 60 To 79
MsgBox "及格"
Case 80 To 89
MsgBox "良好"
Case Else
MsgBox "优秀"
End Select
End Sub
另一种实现
Sub 按钮1_Click()
If [a1].Value = "" Then
MsgBox "A1 单元格没有输入数字。"
Exit Sub ' 退出程序
End If
Select Case [a1].Value
Case Is < 30
MsgBox "差"
Case Is < 60
MsgBox "不及格"
Case Is < 80
MsgBox "及格"
Case Is < 90
MsgBox "良好"
Case Else
MsgBox "优秀"
End Select
End Sub
For 循环变量=初值 to 终值 step 步长
循环体 1
[exit for]
循环体 2
next 循环变量
补充:
1.Next 后面的驯化变量可以省略不写
For Each 元素变量 In 对象集合或数组名称
语句块 1
[Exit For]
语句块 2
next 元素变量
举个栗子
Sub 按钮1_Click()
Dim i As Integer, sht As Worksheet
i = 1
For Each sht In Worksheets
Cells(i, 1) = sht.Name
i = i + 1 '让写入名称的单元格下移一行
Next
End Sub
格式1——开头判断循环条件:
Do While 循环条件
语句块 1
[Exit Do]
语句块 2
Loop
格式2——结尾判断循环条件:
Do
语句块 1
[Exit Do]
语句块 2
Loop While 循环条件
格式1——开头判断循环条件:
Do Until 循环条件
语句块 1
[Exit Do]
语句块 2
Loop
格式2——结尾判断循环条件:
Do
语句块 1
[Exit Do]
语句块 2
Loop Until 循环条件
举个栗子
Sub 按钮1_Click()
Dim Lsum As Long, i As Long
i = 1
Do
Lsum = Lsum + i
i = i + 1
Loop Until i > 1000
MsgBox "1 到 1000 的自然数和为:" & Lsum
End Sub
举个栗子
Sub 按钮1_Click()
Dim Lsum As Long, i As Long
i = 1
x: '为 go to 语句设置的标签,必须以英文状态下的冒号结尾
Lsum = Lsum + i
i = i + 1
If i <= 1000 Then GoTo x '如果 i<=1000,则程序跳到标签 X 处
MsgBox "1 到 1000 的自然数和为:" & Lsum
End Sub
新建Excel文件,Alt + F11 打开VBE(VBA编辑器),右键相应的Excel Project,插入 -> 用户窗体
在窗体的Picture属性中,添加你想要展示的欢迎界面图片
注意:最好是bmp文件,否则可能会提示无效文件
如果打不开,
可以使用Windows自带的画图工具将图片另存为BMP文件格式
调整窗口大小至刚好可以将图片完全展示出来
右键刚才新建好的窗体 -> 查看代码
输入如下代码:
Private Sub UserForm_Initialize()
Application.OnTime Now() + TimeValue("00:00:03"), "miss"
End Sub
再次右键相应的Excel Project,插入 -> 模块
双击新建模块,输入如下代码:
Sub main()
UserForm1.Show
End Sub
Sub miss()
Unload UserForm1
End Sub
双击ThisWorkbook,输入如下代码:
Private Sub Workbook_Open()
Call main
End Sub
保存后重启Excel,就可以看到刚才制作的欢迎界面了
[撒花]
参考Excel下载地址:https://download.csdn.net/download/qq_33204709/12045399