Excel 中的 vba 是什么? (基础到高级)
什么是VBA?
VBA(Visual Basic for Applications)是一种编程语言,可让您自动化 Excel 中的几乎所有内容。使用 VBA,您可以引用 Excel 对象并使用与其关联的属性、方法和事件。例如,您可以创建数据透视表、插入图表并使用宏向用户显示消息框。
最疯狂的是:
对于您在几分钟内手动完成的所有任务,VBA 可以在几秒钟内完成,只需单击一下,并且具有相同的精度。您甚至可以编写 VBA 代码,这些代码可以在您打开文档、工作簿甚至在特定时间时自动运行。
让我向您展示一个具体的例子:
每天早上,当我去办公室时,我要做的第一件事就是为本月至今的销售额创建一个数据透视表,并将其呈现给我的老板。这包括每天相同的步骤。但当我意识到我可以使用VBA 创建数据透视表并只需单击一下即可将其插入时,它每天为我节省了 5 分钟。
这就是 VBA 的工作原理
VBA 是一种面向对象的语言,作为一种面向对象的语言,在 VBA 中,我们以使用对象然后定义其属性的方式构建代码。
简单来说,我们首先定义对象,然后定义我们想要执行的活动。您可以在 VBA 中使用对象、集合、方法和属性来编写代码。
>不要错过这个<
假设您想告诉某人打开一个盒子。您将使用的词语是“打开盒子”。这是简单的英语,不是吗?但当涉及到 VBA 和编写宏时,就会是:
Box.Open
正如你所看到的,上面的代码是从我们的对象盒子开始的,然后我们使用了“Open”方法。让我们更具体一点,假设您想打开红色的盒子。为此,代码将是:
Boxes(“Red”).Open
在上面的代码中,boxes是集合,open是方法。如果您有多个盒子,我们会在此处定义一个特定的盒子。这是另一种方法:
Box(“Red”).Unlock = True
在上面的代码中,框再次是集合,Unlock 是设置为 TRUE 的属性。
Excel中VBA的用途是什么?
在 Excel 中,您可以使用 VBA 来完成不同的任务。这里有一些:
- 输入数据:您可以将数据输入单元格、单元格区域。您还可以将数据从一个部分复制并粘贴到另一部分。
- 任务自动化:您可以自动执行需要花费大量时间的任务。我能给出的最好的例子是使用宏来创建数据透视表。
- 创建自定义 Excel 函数:使用 VBA,您还可以创建自定义用户定义函数并在工作表中使用它。
- 创建加载项:在 Excel 中,您可以将 VBA 代码转换为加载项并与其他人共享。
- 与其他 Microsoft 应用程序集成:您还可以将 Excel 与其他 Microsoft 应用程序集成。例如,您可以将数据输入到文本文件中。
Excel 编程基础
1. 程序
VBA 中的过程是执行特定活动的一组代码或一行代码。
- SUB :Sub 过程可以执行操作但不返回值(但您可以使用对象来获取该值)。
- Function :使用 Function 过程,您可以创建函数,您可以在电子表格或其他 SUB 和 FUNCTION 过程中使用该函数(请参阅: VBA Function )。
2. 变量和常量
您需要变量和常量才能在代码中多次使用值。
- 变量:变量可以存储一个值,它有一个名称,您必须定义它的数据类型,并且可以修改它存储的值。顾名思义,“VARIABLE”没有固定值。它就像是一个存储在系统中的储物盒。
- 常量:常量也可以存储值,但在运行代码时无法更改该值。
3. 数据类型
您必须声明变量和常量的数据类型。
当您指定变量或常量的数据类型时,它可以确保数据的有效性。如果省略数据类型,VBA 将 Variant 数据类型应用于您的变量(这是最灵活的),VBA 将不会猜测数据类型应该是什么。
提示:显式 VBA 选项
4. 对象、属性和方法
Visual Basic for Applications 是一种面向对象的语言,要充分利用它;您需要了解 Excel 对象。
您在 Excel 中使用的工作簿包含不同的对象,对于所有这些对象,您可以访问多个属性和可以使用的方法。
5. 活动
每次在 Excel 中执行某项操作时,这都是一个事件:在单元格中输入值、插入新工作表或插入图表。以下是事件按照对象的分类:
- 应用程序事件:这些事件与 Excel 应用程序本身相关。
- 工作簿事件:这些事件与工作簿中发生的操作相关联。
- 工作表事件:这些事件与工作表中发生的操作相关联。
- 图表事件:这些事件与图表工作表(与工作表不同)相关联。
- 用户窗体事件:这些事件与用户窗体发生的操作相关联。
- OnTime 事件:OnTime 事件是那些可以在特定时间触发代码的事件。
- OnKey 事件: OnKey 事件是按下特定键时可以触发代码的事件。
六、适用范围
范围对象是在 VBA 代码中引用范围的最常见和流行的方式。你需要参考单元格地址,让我告诉你语法。
Worksheets(“Sheet1”).Range(“A1”)
七、条件
与任何其他编程语言一样,您也可以在 VBA 中编写代码来测试条件。它允许您以两种不同的方式执行此操作。
- IF THEN ELSE :这是一个 IF 语句,您可以使用它来测试条件,然后在条件为 TRUE 时执行一行代码。您还可以编写嵌套条件
- SELECT CASE :在 select 用例中,可以指定一个条件,然后指定不同的测试结果用例来执行不同行的代码来执行。它比 IF 语句更加结构化。
8.VBA 循环
您可以在 VBA 中编写可以重复执行某个操作的代码,并且有多种方法可以编写这样的代码。
- For Next :最适合使用 For Next 的是当您想要重复一组操作固定次数时。
- For Each Next :当您想要从对象集合中迭代一组对象时,它非常适合使用。
- Do While 循环:Do While 循环背后的简单思想是在条件为真时执行一项活动。
- Do Until循环:在Do Until循环中,VBA执行一个循环,如果条件为FALSE则继续执行。
9. 输入框和消息框
- 输入框:输入框是向用户显示输入框并收集响应的功能。
- 消息框:消息框可帮助您向用户显示消息,但您可以选择向消息框添加按钮以获取用户的响应。
10. 错误
Excel 在遇到编程错误时很不幸,无论如何你都必须处理它们。
- 语法错误:这些错误就像您在编写代码时犯下的拼写错误,但 VBA 可以通过报告这些错误来帮助您。
- 编译错误:当您编写代码来执行某项活动但该活动无效时,就会发生这些错误。
- 运行时错误:代码执行期间发生运行时错误。它停止代码并显示错误对话框。
- 逻辑错误:这不是一个错误,而是编写代码时的错误,有时会给您在查找和修复它们时带来麻烦。
在Excel中编写宏(VBA程序)
我坚信,最初当有人开始使用 Excel 编程时,他/她应该从头开始编写越来越多的代码。从头开始编写的代码越多,您就越了解 VBA 的工作原理。
但您应该从编写简单的代码开始,而不是跳入复杂的代码。这就是为什么我现在不希望你考虑任何复杂的事情。
您甚至可以编写宏代码来创建数据透视表,但现在我不希望您考虑那么远。让我们考虑一下您想要在电子表格中执行的活动,并且您可以为其编写代码。
- 转到“开发人员”选项卡,然后从“Visual Basic”按钮打开Visual Basic 编辑器。
- 之后,从“项目窗口”插入一个新模块(右键单击>插入>模块)。
- 之后,进入代码窗口并创建一个名为“Enter Done”的宏(我们创建一个 SUB 过程),如下所示。
- 从那里,您需要编写一些我们上面刚刚讨论过的代码。等一下,这样想:您需要指定要插入值的单元格,然后指定要输入的值。
- 输入单元格引用,为此您需要使用 RANGE 对象并在那里指定单元格地址,如下所示:
- 之后,输入一个点,添加点后,您将获得可以设置的属性列表以及可以在该范围内执行的活动。
- 从这里,您需要选择“Value”属性并设置要插入单元格“A1”的文本,执行此操作时,您的代码将如下所示。
- 最后,在代码行上方输入文本(“此代码在单元格 A5 中输入值“完成”)。这是一个VBA 注释,您可以插入它来定义您编写的代码行。
Sub Enter_Done() 'this code enters the value “Done” in the cell A5 Range("A1").Value = "Done" End Sub
让我们了解一下……
您可以将此代码分成两个不同的部分。
- 在第一部分中,我们使用 RANGE 对象指定单元格地址。并且,要使用范围对象引用单元格,您需要用双引号将单元格地址括起来(也可以使用方括号)。
- 在第二部分中,我们指定了要在单元格中输入的值。您所做的是使用“.Value”设置单元格 A5 的 value 属性。之后,您指定的下一个内容是相对于 value 属性的值。每当定义一个值(如果它是文本)时,都必须将该值括在双引号中。
学习 VBA 的最佳方式
在这里,我列出了一些最令人惊奇的教程(不按任何特定顺序),可以帮助您立即学习 VBA。
- 100 个有用的 Excel [VBA] 宏代码示例
- 如何使用 VBA 在 Excel 中创建用户定义函数 [UDF]
- VBA面试问题
1.VBA入门
2. 在 VBA 中使用工作簿
3. 使用电子表格
4. 使用范围和单元格
- 在 VBA 中使用范围和单元格
- 在 Excel 中使用 VBA 计算行数
- Excel VBA 字体(颜色、大小、类型和粗体)
- Excel VBA 隐藏和显示列或行
- 如何在 Excel 中使用 VBA 在单元格上应用边框
- 如何在Excel中使用VBA查找最后一行、最后一列和单元格
- 如何在 Excel 中使用 VBA 插入行
- 如何使用 VBA 代码合并 Excel 中的单元格
- 如何在 Excel 中使用 VBA 选择范围/单元格
- 如何使用 VBA 选择工作表中的所有单元格
- 如何在 Excel 中使用 VBA 中的 ActiveCell
- 如何在 Excel 中使用 VBA 中的特殊单元格方法
- 如何在Excel中使用VBA中的UsedRange属性
- VBA 自动调整(行、列或整个工作表)
- VBA ClearContents(来自单元格、范围或整个工作表)
- VBA将范围复制到另一张工作表+工作簿
- VBA 在单元格中输入值(设置、获取和更改)
- VBA 插入列(单个和多个)
- 名为 VBA | 的范围(静态+选择+动态)
- VBA 范围偏移
- VBA 排序范围 | (降序、多列、排序方向
- VBA 文本换行(单元格、范围和整个工作表)
- 如何使用VBA代码在Excel中突出显示重复值
- 如何使用 VBA UDF 在 Excel 中提取超链接地址 (URL)
5. 变量和常量
6.卷发
七、条件
8. 计算
9. 表格
10. 错误
11. 功能
- 主要 VBA 函数
- VBA ABS函数(取绝对值)
- VBA数组函数
- VBA ATN函数(语法+示例)
- VBA CBOOL函数(语法+示例)
- VBA CBYTE函数(语法+示例)
- VBA CCUR 函数(语法+示例)
- VBA CDATE函数(语法+示例)
- VBA CDBL函数(语法+示例)
- VBA CDEC函数(语法+示例)
- VBA CHR函数(语法+示例)
- VBA CINT函数(语法+示例)
- VBA CLNG函数(语法+示例)
- VBA COS函数(语法+示例)
- VBA CSNG函数(语法+示例)
- VBA CSTR函数(语法+示例)
- VBA CVAR函数(语法+示例)
- VBA CVERR函数(语法+示例)
- VBA DATE函数(语法+示例)
- VBA DATEADD 函数(语法+示例)
- VBA DATEPART 函数(语法+示例)
- VBA DATESERIAL 函数(语法+示例)
- VBA DATEVALUE 函数(语法+示例)
- VBA DAY 函数(语法+示例)
- VBA DDB函数(语法+示例)
- VBA EXP函数(语法+示例)
- VBA 文件日期时间函数
- VBA FILTER 函数(语法+示例)
- VBA FIX 函数(语法+示例)
- VBA FORMAT 函数(语法+示例)
- VBA FORMATCURRENCY 函数(语法+示例)
- VBA FORMATDATETIME 函数(语法+示例)
- VBA FORMATNUMBER 函数(语法+示例)
- VBA FORMATPERCENT 函数(语法+示例)
- VBA FV函数(语法+示例)
- VBA HEX 函数(语法+示例)
- VBA HOUR 函数(语法+示例)
- VBA IIF 函数(语法+示例)
- VBA INSTR 函数(语法+示例)
- VBA INSTRREV 函数(语法+示例)
- VBA INT 函数(语法+示例)
- VBA IPMT函数(语法+示例)
- VBA IRR 函数(语法+示例)
- VBA ISARRAY 函数(语法+示例)
- VBA ISDATE 函数(语法+示例)
- VBA ISEMPTY 函数(语法+示例)
- VBA ISERROR 函数(语法+示例)
- VBA ISMISSING 函数(语法+示例)
- VBA ISNULL 函数(语法+示例)
- VBA ISNUMERIC 函数(语法+示例)
- VBA ISOBJECT 函数(语法+示例)
- VBA JOIN 函数(语法+示例)
- VBA LBOUND 函数(语法+示例)
- VBA LCASE函数(语法+示例)
- VBA LEFT 函数(语法+示例)
- VBA LEN 函数(语法+示例)
- VBA LOG 函数(语法+示例)
- VBA LTRIM 函数(语法+示例)
- VBA MID函数(语法+示例)
- VBA MINUTE 函数(语法+示例)
- VBA MIRR 函数(语法+示例)
- VBA MONTH 函数(语法+示例)
- VBA MONTHNAME 函数(语法+示例)
- VBA NOW 函数(语法+示例)
- VBA NPER函数(语法+示例)
- VBA NPV 函数(语法+示例)
- VBA OCT函数(语法+示例)
- VBA PMT函数(语法+示例)
- VBA PPMT函数(语法+示例)
- VBA PV函数(语法+示例)
- VBA RATE 函数(语法+示例)
- VBA REPLACE 函数(语法+示例)
- VBA RIGHT 函数(语法+示例)
- VBA RND函数(语法+示例)
- VBA ROUND 函数(语法+示例)
- VBA RTRIM函数(语法+示例)
- VBA SECOND 函数(语法+示例)
- VBA SGN函数(语法+示例)
- VBA SIN 函数(语法+示例)
- VBA SLN 函数(语法+示例)
- VBA SPACE函数(语法+示例)
- VBA SPLIT 函数(语法+示例)
- VBA SQR 函数(语法+示例)
- VBA STR 函数(语法+示例)
- VBA STRCOMP 函数(语法+示例)
- VBA STRCONV 函数(语法+示例)
- VBA STRING 函数(语法+示例)
- VBA STRREVERSE 函数(语法+示例)
- VBA SYD函数(语法+示例)
- VBA TAN 函数(语法+示例)
- VBA TIME 函数(语法+示例)
- VBA TIMER函数(语法+示例)
- VBA TIMESERIAL 函数(语法+示例)
- VBA TIMEVALUE 函数(语法+示例)
- VBA TRIM 函数(语法+示例)
- VBA UBOUND 函数(语法+示例)
- VBA UCASE函数(语法+示例)
- VBA VAL 函数(语法+示例)
- VBA WEEKDAY 函数(语法+示例)
- VBA WEEKDAYNAME 函数(语法+示例)
- VBA YEAR 函数(语法+示例)