【VBA】EXCEL 开发基础,小白看了都会用
【代码】【VBA】EXCEL 开发基础,小白看了都会用。
·
目录
一、VBA 基础
- 开发环境介绍
- 如何在 Office 软件中启用 VBA 编辑器(以 Excel 为例:通过 “文件” - “选项” - “自定义功能区”,勾选 “开发工具” 选项卡,从而在 Excel 界面中显示 “开发工具” 选项卡,点击其中的 “Visual Basic” 按钮即可打开 VBA 编辑器)。
- 认识 VBA 编辑器界面,包括工程资源管理器(用于管理项目中的各种对象,如工作表、工作簿等)、代码窗口(编写 VBA 代码的地方)、属性窗口(设置对象的属性,如颜色、字体等)。
- VBA 编程基础概念
- 变量与数据类型
- 变量的定义 使用 Dim 语句,
-
Dim myNumber As Integer定义一个名为 myNumber 的整型变量
-
- 基本数据类型,
- 整型(Integer)、长整型(Long)、单精度浮点型(Single)、双精度浮点型(Double)、字符串型(String)、布尔型(Boolean)
- 变量的作用域(过程级变量、模块级变量、全局变量)及生命周期。
- 变量的定义 使用 Dim 语句,
- 常量
- 常量的定义(使用 Const 语句,如
Const pi As Double = 3.14159定义一个名为 pi 的常量)。 - 内置常量(如 Excel 中的 xlUp、xlDown 等表示方向的常量)。
- 常量的定义(使用 Const 语句,如
- 运算符与表达式
- 算术运算符(+、 - 、*、/、Mod 等)、比较运算符(=、<>、>、<、>=、<=)、逻辑运算符(And、Or、Not)、字符串运算符(&)等。
- 表达式的运算顺序。
二、流程控制语句
- 条件语句
- If...Then...Else 语句
- 简单的 If 判断,如
If num > 10 Then MsgBox "数字大于10"。 - If...Then...Else 结构,用于根据条件执行不同的代码块,例如:
- 简单的 If 判断,如
- If...Then...Else 语句
Dim score As Integer
score = 85
If score >= 60 Then
MsgBox "及格"
Else
MsgBox "不及格"
End If
- If...Then...ElseIf...Else 语句,用于多条件判断,比如根据不同的分数段给出不同的评价:
Dim score As Integer
score = 85
If score >= 90 Then
MsgBox "优秀"
ElseIf score >= 80 Then
MsgBox "良好"
ElseIf score >= 60 Then
MsgBox "及格"
Else
MsgBox "不及格"
End If
- Select Case 语句
适用于根据一个表达式的值在多个分支中选择执行,例如根据星期几执行不同的操作:
Dim dayOfWeek As Integer
dayOfWeek = Weekday(Now) '获取当前日期是星期几
Select Case dayOfWeek
Case 1
MsgBox "星期日"
Case 2
MsgBox "星期一"
Case Else
MsgBox "其他工作日"
End Select
- 循环语句
- For...Next 循环
用于已知循环次数的情况,例如计算 1 到 100 的和:
- For...Next 循环
Dim sum As Integer
Dim i As Integer
sum = 0
For i = 1 To 100
sum = sum + i
Next i
MsgBox "1到100的和为:" & sum
- Do...Loop 循环
有多种形式,如 Do While...Loop(当条件满足时循环)、Do Until...Loop(当条件不满足时循环)。例如,计算 1 到某个数的和,直到和大于 100 为止:
Dim sum As Integer
Dim num As Integer
sum = 0
num = 1
Do While sum <= 100
sum = sum + num
num = num + 1
Loop
MsgBox "累加和大于100时,最后一个数为:" & num - 1
- While...Wend 循环
类似于 Do While...Loop,不过语法略有不同
Dim i As Integer
i = 1
While i <= 5
MsgBox i
i = i + 1
Wend
三、VBA 中的对象模型
- Excel 对象模型概述
- Excel 应用程序对象(Application),它代表整个 Excel 应用程序,可以通过它访问和控制 Excel 的各种属性和方法,如
Application.Visible = False可隐藏 Excel 应用程序窗口。 - 工作簿对象(Workbook),一个 Excel 文件就是一个工作簿。可以使用
Workbooks.Open方法打开工作簿,Workbooks.Add方法新建工作簿。 - 工作表对象(Worksheet),工作簿中的每一张表就是一个工作表。可以通过
Worksheets("Sheet1")或Worksheets(1)来引用工作表,前者通过名称,后者通过索引。 - 单元格对象(Range),用于表示工作表中的单元格或单元格区域。例如
Range("A1")表示 A1 单元格,Range("A1:C3")表示 A1 到 C3 的单元格区域。
- Excel 应用程序对象(Application),它代表整个 Excel 应用程序,可以通过它访问和控制 Excel 的各种属性和方法,如
- 常用对象的属性和方法
- Worksheet 对象
- 属性:Name(工作表名称)、Visible(工作表是否可见)等。例如
Worksheets("Sheet1").Name = "新工作表名"。 - 方法:Activate(激活工作表)、Copy(复制工作表)等。如
Worksheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)将 Sheet1 复制到所有工作表之后。
- 属性:Name(工作表名称)、Visible(工作表是否可见)等。例如
- Range 对象
- 属性:Value(单元格的值)、Address(单元格地址)、Font(字体相关属性)、Interior(内部颜色相关属性)等。例如
Range("A1").Value = "Hello"设置 A1 单元格的值为 “Hello”;Range("A1").Font.Bold = True设置 A1 单元格字体为加粗。 - 方法:Select(选中单元格区域)、Clear(清除单元格内容)、Copy(复制单元格区域)、PasteSpecial(选择性粘贴)等。如
Range("A1:C3").Copy Destination:=Range("E1")将 A1 到 C3 的单元格区域复制到 E1 开始的区域。
- 属性:Value(单元格的值)、Address(单元格地址)、Font(字体相关属性)、Interior(内部颜色相关属性)等。例如
- Worksheet 对象
四、VBA 过程与函数
- Sub 过程(子过程)
- 定义 Sub 过程:使用 Sub 关键字
Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
- 调用 Sub 过程:可以在 VBA 编辑器中直接按 F5 运行,也可以在其他过程中调用,如
Call HelloWorld。 - 带参数的 Sub 过程:例如,定义一个根据姓名显示问候语的过程:
Sub Greet(name As String)
MsgBox "你好," & name
End Sub
调用时 Call Greet("小吴")。
2. Function 过程(函数)
- 定义 Function 过程:使用 Function 关键字,并且函数需要有返回值
Function AddNumbers(a As Integer, b As Integer) As Integer
AddNumbers = a + b
End Function
- 调用 Function 过程:可以在其他过程中使用,如
Dim result As Integer,result = AddNumbers(3, 5),此时 result 的值为 8。 - 过程和函数的作用域
- 可以通过 Private 关键字定义私有的过程或函数,只能在本模块内使用;Public 关键字定义公有的过程或函数,可在整个项目中使用。默认情况下,在模块顶部定义的过程和函数是公有的。
五、用户界面设计
- 用户窗体(UserForm)基础
- 在 VBA 编辑器中插入用户窗体(通过 “插入” - “用户窗体”)。
- 认识用户窗体的属性窗口,如 Caption(标题)、BackColor(背景颜色)等属性。
- 常用控件的使用
- 按钮(CommandButton)
- 添加按钮到用户窗体,设置其 Caption 属性为显示的文本,如 “确定”。
- 编写按钮的 Click 事件代码
- 按钮(CommandButton)
Private Sub CommandButton1_Click()
MsgBox "你点击了确定按钮"
End Sub
- 文本框(TextBox)
用于用户输入文本。获取文本框的值可通过TextBox1.Value
Private Sub CommandButton1_Click()
Dim inputText As String
inputText = TextBox1.Value
MsgBox "你输入的内容是:" & inputText
End Sub
- 标签(Label)
用于显示文本信息,如提示用户输入的内容。设置其 Caption 属性为要显示的文本。 - 组合框(ComboBox)
可以让用户从下拉列表中选择项目。通过ComboBox1.AddItem方法添加项目,如ComboBox1.AddItem "选项1";通过ComboBox1.Value获取用户选择的值。
六、文件操作
- 文件的打开与关闭
- 使用
Open语句打开文件,例如以读模式打开文本文件:
- 使用
Dim fileNum As Integer
fileNum = FreeFile '获取一个未使用的文件号
Open "C:\test.txt" For Input As #fileNum
- 使用
Close语句关闭文件,如Close #fileNum。 - 文件的读写操作
- 读取文本文件:使用
Input语句、Line Input语句或InputB函数等。例如,使用Line Input逐行读取文本文件:
- 读取文本文件:使用
Dim fileNum As Integer
Dim lineText As String
fileNum = FreeFile
Open "C:\test.txt" For Input As #fileNum
Do While Not EOF(fileNum)
Line Input #fileNum, lineText
MsgBox lineText
Loop
Close #fileNum
- 写入文本文件:使用
Print #语句或Write #语句。例如,将内容写入文本文件:
Dim fileNum As Integer
fileNum = FreeFile
Open "C:\test.txt" For Output As #fileNum
Print #fileNum, "这是要写入的内容"
Close #fileNum
- 文件和文件夹的操作
- 文件的复制、移动和删除:使用
FileCopy语句复制文件(如FileCopy "C:\source.txt", "D:\destination.txt"),Name语句可用于移动文件或重命名文件(如Name "C:\oldname.txt" As "C:\newname.txt"实现重命名,Name "C:\file.txt" As "D:\file.txt"实现移动),Kill语句删除文件(如Kill "C:\test.txt")。 - 文件夹的创建、删除和遍历:使用
MkDir语句创建文件夹(如MkDir "C:\newfolder"),RmDir语句删除文件夹(文件夹必须为空),通过Dir函数遍历文件夹中的文件和子文件夹。例如,遍历某个文件夹下的所有文件:
- 文件的复制、移动和删除:使用
Dim filePath As String
filePath = "C:\MyFolder\"
Dim fileName As String
fileName = Dir(filePath & "*.*")
Do While fileName <> ""
MsgBox fileName
fileName = Dir
Loop
七、错误处理
- 错误处理机制
- 使用
On Error GoTo语句来设置错误处理程序
- 使用
Sub TestError()
On Error GoTo ErrorHandler
Dim num As Integer
num = 10 / 0 '会产生除以零的错误
Exit Sub
ErrorHandler:
MsgBox "发生错误:" & Err.Description
End Sub
- Err 对象
通过 Err 对象获取错误信息,如 Err.Number(错误号)、Err.Description(错误描述)等属性。在错误处理程序中,可以根据错误号进行不同的处理。
更多推荐



所有评论(0)