关于在excel中编写vba宏的初学者教程(以及学习的原因)

如果您经常使用Excel,那么就值得学习如何创建VBA宏并访问更多功能和功能。...

Excel宏可以通过自动化经常使用的Excel过程来节省大量的时间。但是宏实际上是非常有限的。录音工具很容易出错,录音过程也很尴尬。

vba-macros-excel

使用VBA来创建宏给了您更多的功能。您可以确切地告诉Excel要做什么以及如何做。您还可以访问更多的功能和能力。如果您经常使用Excel,那么学习如何创建VBA宏是值得的。

我们从基本知识开始。

什么是vba(vba)?

VBA是visualbasicforapplicati***,一种可以在许多微软应用程序中使用的编程语言。visualbasic是一种编程语言,VBA是它的特定于应用程序的版本。(微软早在2008年就停止了visualbasic,但VBA仍然很强大)。

幸运的是,对于非程序员来说,VBA非常简单,您用来编辑它的接口提供了很多帮助。您将使用弹出式建议和自动完成的许多命令,帮助您快速地运行脚本。

不过,VBA需要一段时间才能适应。

excel中vba宏的优点

如果VBA比录制宏更困难,为什么要使用它?简而言之,VBA宏的功能更强大。

您可以访问Excel的所有功能和功能,而不是在电子表格中单击并记录这些单击。你只需要知道如何使用它们。

一旦您对VBA更熟悉了,您就可以用更少的时间在常规宏中完成所有可能要做的事情。结果也将更加可预测,因为你告诉Excel要做什么。一点都不含糊。

一旦创建了VBA宏,就可以很容易地保存和共享它,以便其他人可以利用它。当您与许多需要在Excel中执行相同操作的人一起工作时,这一点尤其有用。

让我们看看一个简单的VBA宏,看看它是如何工作的。

excel中vba宏的一个例子

让我们看一个简单的宏。我们的电子表格包含员工姓名、员工工作的商店编号以及他们的季度销售额。

007Ys3FFly1gourqq7ebaj30im0bj3yx

此宏将添加每个商店的季度销售额,并将这些总额写入电子表格中的单元格(如果您不确定如何访问VBA对话框,请查看此处的VBA演练):

Sub StoreSales()Dim Sum1 As CurrencyDim Sum2 As CurrencyDim Sum3 As CurrencyDim Sum4 As CurrencyFor Each Cell In Range("C2:C51") Cell.Activate If IsEmpty(Cell) Then Exit For If ActiveCell.Offset(0, -1) = 1 Then Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 2 Then Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 3 Then Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 4 Then Sum4 = Sum4 + Cell.ValueEnd IfNext Cell Range("F2").Value = Sum1Range("F3").Value = Sum2Range("F4").Value = Sum3Range("F5").Value = Sum4 End Sub

这看起来可能很长很复杂,但我们将对其进行分解,以便您可以看到各个元素并了解一些VBA的基础知识。

声明sub

在模块的开头,我们有“Sub StoreSales()”。这定义了一个名为StoreSales的新子类。

您还可以定义函数——不同的是函数可以返回值,而sub不能(如果您熟悉其他编程语言,sub相当于方法)。在这种情况下,我们不需要返回值,所以我们使用sub。

在模块的末尾,我们有“end Sub”,它告诉Excel我们已经完成了这个VBA宏。

声明变量

脚本中的第一行代码都以“Dim”开头。Dim是VBA用于声明变量的命令。

所以“Dim Sum1”创建了一个名为“Sum1”的新变量。但是,我们需要告诉Excel这是什么类型的变量。我们需要选择一种数据类型。VBA中有许多不同的数据类型--您可以在Microsoft的帮助文档中找到完整的列表。

因为我们的VBA宏要处理货币,所以我们使用的是货币数据类型。

语句“Dim Sum1 As Currency”告诉Excel创建一个名为Sum1的新货币变量。您声明的每个变量都需要有一个“As”语句来告诉Excel它的类型。

启动for循环

循环是在任何编程语言中都可以创建的最强大的东西。如果您不熟悉循环,请查看Do While循环的解释。在本例中,我们使用了For循环,本文也介绍了这一点。

循环如下:

For Each Cell in Range("C2:C51")[a bunch of stuff]Next Cell

这告诉Excel遍历指定范围内的单元格。我们使用了Range对象,它是VBA中的一种特定类型的对象。当我们这样使用它时,Range(“C2:C51”)——它告诉Excel我们对这50个单元格感兴趣。

“对于每个单元格”都告诉Excel,我们将对范围内的每个单元格执行某些操作下一个单元格“完成我们想做的一切,并告诉Excel从一开始就开始循环(从下一个单元格开始)。

我们还有这样一句话:“如果IsEmpty(Cell),那么退出For。”

你能猜出它是干什么的吗?

注意:严格来说,使用While循环可能是更好的选择。但是,为了教学,我决定使用带有出口的for循环。

if-then-else语句

这个特殊宏的核心是If-Then-Else语句。下面是我们的条件语句序列:

If ActiveCell.Offset(0, -1) = 1 Then Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 2 Then Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 3 Then Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 4 Then Sum4 = Sum4 + Cell.ValueEnd If

在很大程度上,你可以猜到这些语句的作用。你可能不熟悉活动单元格偏移“不过。”活动单元格偏移(0,-1)”告诉Excel查看活动单元格左侧一列的单元格。

在我们的例子中,这是告诉Excel查询storenumber列。如果Excel在该列中找到1,则会获取活动单元格的内容并将其添加到Sum1中。如果找到2,则将活动单元格的内容添加到Sum2中。等等。

Excel按顺序遍历所有这些语句。如果条件语句得到满足,则完成Then语句。如果没有,它将进入下一个ElseIf。如果它一直到最后,而且没有任何条件得到满足,它将不会采取任何行动。

循环和条件的组合驱动了这个宏。循环告诉Excel遍历所选内容中的每个单元格,条件告诉Excel如何处理该单元格。

写入单元格值

最后,我们将计算结果写入单元格。下面是我们用来做的行:

Range("F2").Value = Sum1Range("F3").Value = Sum2Range("F4").Value = Sum3Range("F5").Value = Sum4

使用“.Value”和等号,我们将这些单元格中的每个单元格设置为其中一个变量的值。

就这样!我们告诉Excel,我们已经用“结束子”编写了这个子子,VBA宏已经完成。

当我们使用“开发人员”选项卡中的“宏”按钮运行宏时,我们得到的结果是:

007Ys3FFly1goyjr4g03bj30im0axdjc

在excel中组装vba的构造块

当您第一次看到上面的VBA宏时,它看起来相当复杂。但在将其分解为各个组成部分之后,逻辑就变得清晰了。像任何脚本语言一样,需要时间来习惯VBA的语法。

但通过练习,您将建立VBA词汇表,能够更快、更准确地编写宏,并且比录制宏的能力强得多。

当你陷入困境时,运行谷歌搜索是一种快速的方法,以得到你的VBA问题的答案。如果你愿意深入研究它以获得技术答案,微软的excelvba引用可能会很有帮助。

一旦您熟悉了基本知识,就可以开始使用VBA来处理诸如从Excel发送电子邮件、导出Outlook任务和显示PC信息之类的事情。

  • 发表于 2021-03-24 10:07
  • 阅读 ( 253 )
  • 分类:互联网

你可能感兴趣的文章

如何将excel数据集成到word文档中

...创建专业的图表,到建立项目管理跟踪程序,但当涉及到编写报告时,Word是一个更好的工具。 ...

  • 发布于 2021-03-13 07:56
  • 阅读 ( 257 )

如何构建vba宏的自定义excel工具栏

...行一个耗时的任务,这很方便。当您构建包含所有最常用宏的自定义工具栏时,它更为方便。 ...

  • 发布于 2021-03-13 16:39
  • 阅读 ( 375 )

5个excel宏资源,用于自动化电子表格

...xcel先生的一个缺点是它没有Excel论坛那样好分类。因此,关于宏的文章和更一般的查询之间没有分离。但是,您可以通过搜索“macro”、“VBA”或其他类似的术语来轻松解决这个问题。 ...

  • 发布于 2021-03-14 21:59
  • 阅读 ( 232 )

如何在excel 2016中录制宏

...如果您希望从宏中获得更多信息,请查看我们的指南:VBA初学者编程和为宏构建工具栏。在Excel中为宏使用VBA会增加更多的功能! ...

  • 发布于 2021-03-15 08:22
  • 阅读 ( 222 )

excelvba初学者编程教程

如果你用的是Excel,你就得试试这个工具! ...

  • 发布于 2021-03-17 04:40
  • 阅读 ( 235 )

如何在excel中使用名称框

...的名称。但是,您也可以启动visualbasic编辑器来进入任何宏的源代码。 ...

  • 发布于 2021-03-20 04:03
  • 阅读 ( 757 )

如何使用vba脚本从excel电子表格发送电子邮件

... 您可能认为从Excel编写电子邮件广播脚本会很复杂。事实并非如此。 ...

  • 发布于 2021-03-22 18:44
  • 阅读 ( 241 )

如何在microsoft word和excel中将“开发人员”选项卡添加到功能区

...以在其计算机上填写的表单。不需要纸张。也许你想得到关于在工作场所开会的反馈。或者你可能想知道在你主持的活动中人们想要什么样的食物。 ...

  • 发布于 2021-03-23 10:44
  • 阅读 ( 466 )

如何学习microsoft office:20个在线教程、视频和课程

... 对于初学者以及那些温习他们的微软办公应用程序技能的人来说,这里有一个值得一看的选项清单。 ...

  • 发布于 2021-03-25 09:26
  • 阅读 ( 792 )

在vba中理解excel单元格与range函数

...的区别,现在就可以将VBA脚本提升到下一个级别了。Dann关于在Excel中使用计数和添加函数的文章将允许您构建更高级的脚本,这些脚本可以非常快速地在所有数据集中累积值。 ...

  • 发布于 2021-03-25 12:55
  • 阅读 ( 484 )