玖叶教程网

前端编程开发入门

00_什么是 Excel VBA?

什么是 Excel VBA?

如果你是学习 Excel 的朋友,对 VBA 这个概念不陌生吧?VBA的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是不是看得头昏脑胀?想学,是不是却茫然得找不到入口?在这里,我把我自己的学习心得和笔记放出来,和大家一起分享交流,一起学习,共同进步。。我的目的不是教学,而是期望创造一个有你,有我,有他的学习氛围!开始吧,记住一个共同的目标——掀开那层神秘的面纱,看看VBA的真实面目。

一些常用的函数相信很多的朋友通过函数的学习收获很多,可以解决工作中的很多问题了。今天带大家详细地理解一下VBA,总在提VBA,那么VBA到底是什么呢?

首先,第一个问题,什么是 VBA?

Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。

以上是 VBA 的百科定义,说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。Office 软件提供丰富的功能接口,VBA 可以调用它们,实现自定义的需求。基本上,能用鼠标和键盘能做的事情,VBA 也能做。

回到 Excel VBA,用它可以编写自定义函数,插入任意图表、批量处理大量数据单元格,编写插件自动化工作。甚至可以编写基于 Excel 的复杂的管理系统,其功能可以媲美桌面软件。

在本系列教程中,我们学习 VBA 语言语法和 Excel 特有的对象的使用。在往后的教程中,如没有特殊说明,文章提到的 VBA 指的是 Excel VBA。

VBA 与宏有什么区别?

在学习 VBA 过程中,经常会出现一个说法,「」。简单的说,宏是一段可以运行的 VBA 代码片段,也可以说是一个简称,并没有特别的不同之处。所以学习 VBA 时,不用纠结于两者到底有什么区别,只需要记住一点,宏是使用 VBA 编写的一段代码片段。

学习 Excel VBA 有什么用处?

前面我们说到,Excel 中,VBA 几乎可以实现任何功能,从简单的数据处理,到批量数据分析,再到与 Office 其他软件交互,甚至与操作系统交互实现复杂的功能,VBA 几乎都可以胜任。以下是 Excel VBA 几个典型的用途。

  • 节省时间:只需一次点击就可以重复执行任意数量的操作。例如,现在要新建 20 个工作表,手动操作可能需要一分钟的时间。使用 VBA 只需一秒即可。
  • 自动化任务:只需一次点击就可以按预先设置好的步骤,自动完成操作。例如,插入一个图表并设调整格式,根据其复杂程度,可能需要多达几分钟时间。而使用VBA编写调整步骤,一次点击,几秒内即可完成所有的操作。
  • 减少错误:相比于手动操作出现的错误,只要正确编写 VBA 代码,执行过程中就不会出现错误。例如,从一区域中筛选指定数据,并复制到另外一个位置,手动操作可能会出现漏选的可能。但是使用 VBA,极短的时间内正确无误的完成操作。
  • 与其他软件交互:使用 VBA,可以在 Excel 里创建、更新 Word、PPT 等文件。还可以与系统交互,做到复制、移动、重命名其他文件等操作,无需打开其他文件。

VBA实现的例子

  • 扫雷小游戏,从网上获取的,版权归原作者,只用来说VBA的强大。如果要想这个VBA版本的数独游戏,可以私信我。

主要代码如下:

Private Sub Left_Click_Event(ByVal x As Integer, ByVal y As Integer)

Dim r%, c%

r = UBound(statusArr)

c = UBound(statusArr, 2)

If Cell_Effective(x, y) = False Then Exit Sub

dr = Array(-1, -1, -1, 0, 0, 1, 1, 1)

dc = Array(-1, 0, 1, -1, 1, -1, 0, 1)

numlist = Array(-c - 1, -c, -c + 1, -1, 1, c - 1, c, c + 1)

If mineArr(x, y) = 9 Then

Call Game_Over(x, y)

Exit Sub

ElseIf mineArr(x, y) > 0 Then

Call Open_Cell(x, y)

Else


Dim checkList, checkedList

Set checkList = CreateObject("Scripting.Dictionary")

Set checkedList = CreateObject("Scripting.Dictionary")

checkList.Add (x - 1) * c + (y - 1), 1


Do While (checkList.Count > 0)


Dim key, a%, b%

For Each key In checkList

a = Int(key / c) + 1

b = key Mod c + 1


Call Open_Cell(a, b)

checkList.Remove (key)

checkedList.Add key, 1


For i = 0 To 7

Dim m%, n%

m = a + dr(i)

n = b + dc(i)

If Cell_Effective(m, n) Then

If statusArr(m, n) = 0 And checkList.Exists(key + numlist(i)) = False And checkedList.Exists(key + numlist(i)) = False Then

If mineArr(m, n) = 0 Then

checkList.Add key + numlist(i), 1

Else

checkedList.Add key + numlist(i), 1

Call Open_Cell(m, n)

End If

End If

End If

Next i

Next

Loop

End If

End Sub

  • 自动化处理,自动生成财务用凭证,财务人员肯定喜欢这个

部分代码如下:

'中介费

pzRowMax = pzsh.Range("H65536").End(xlUp).Row

If rsh.Cells(kk, kkk).Value > 0 Then

'凭证类别

pzsh.Cells(pzRowMax + 1, 2).Value = "记账凭证"

'币种

pzsh.Cells(pzRowMax + 1, 10).Value = "人民币"

'借贷方向

pzsh.Cells(pzRowMax + 1, 13).Value = "贷方

If InStr(colName, "中介费") > 0 Then

'科目

pzsh.Cells(pzRowMax + 1, 8).Value = "50010102"

'摘要

pzsh.Cells(pzRowMax + 1, 7).Value = zyVal

'本币

pzsh.Cells(pzRowMax + 1, 15).Value = rsh.Cells(kk, kkk).Value

'部门编码

pzsh.Cells(pzRowMax + 1, 27).Value = bmDic(md)

End If


'平台费

pzRowMax = pzsh.Range("H65536").End(xlUp).Row

If InStr(colName, "平台费") > 0 Then

'科目

pzsh.Cells(pzRowMax + 1, 8).Value = "50010202"

'摘要

pzsh.Cells(pzRowMax + 1, 7).Value = zyVal

'本币

pzsh.Cells(pzRowMax + 1, 15).Value = rsh.Cells(kk, kkk).Value

'部门编码

pzsh.Cells(pzRowMax + 1, 27).Value = bmDic(md)

End If

End If

小结:

在 Excel 众多的概念中,VBA 是最重要也是最难学的一部分。如果涉及到数据处理工作,VBA 几乎可以实现任何功能,从简单的数据处理,到批量数据分析,再到与 Office 其他软件交互,甚至与操作系统交互实现复杂的功能,VBA 几乎都可以胜任。

发挥你的想象,在Excel中,只要是你用键盘和鼠标能实现的功能,VBA基本都能实现。大大提高工作效率!!!

看到这,可能一部分人就放弃了,看了这些代码就头大。其实一些Excel VBA高手往往不是程序员,是各个行业的专业人员,比如财务,人事,统计人员等等。

我们讲完VBA里的基本概念,我们就开始进行大量实例的讲解!把工作中一些繁杂重复的数据工作,用VBA来实现!!!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言