精华内容
下载资源
问答
  • 什么是VBA,它有什么作用 VBA在哪里存放的?怎么运行的 什么是宏?宏和VBA有什么关系? 录制一个宏 编写第一个宏 一、什么是VBA,它有什么作用 VBA是一种编程语言,它依托于Office...

    目录

    •  什么是VBA,它有什么作用

    •  VBA在哪里存放的?怎么运行的

    • 什么是宏?宏和VBA有什么关系?

    • 录制一个宏

    • 编写第一个宏

    一、什么是VBA,它有什么作用

    VBA是一种编程语言,它依托于Office软件,不能独立的运行,通过VBA可以实现各种Office软件操作的自动化。

    总结下VBA的作用:

    • 实现Excel中没有提供的功能

    • 提高运行速度

    • 编写自定义函数

    • 实现自动化功能

    • 通过插入窗体做小型管理软件

     二、VBA在哪里存放的?怎么运行的

    VBA存放于Visual Basic 中:

     

    我们这里以模块的方式存放已经写好的VBA代码,我们要在自己的表格中实现下面的这段代码:

    方法一:在Visual Basic中直接运行

    方法二:在表单中通过添加按钮来关联VBA命令

     

    三、什么是宏?宏和VBA有什么关系?

    初学Excel编程,大多数人搞不懂VBA和宏的关系,其实这两样是一回事。VBAVisual Basic for Application的缩写,通俗说就是用VB对程序进行控制。宏,即Macro,个人认为这个翻译害了一群人,因为它把简单的事情搞高深了。宏的背后其实也是一堆VBA代码,只不过是由系统自动生成的。
    VBA和宏既然是同一个东西,都是基于VB代码以丰富Excel的功能。那么马上就会引出另外的疑问。
    1. 我们为什么需要宏和VBA
    2. 什么情况下我们需要宏和VBA
    3. 宏和VBA的区别是什么?
    首先,我先回答第一个问题:“我们为什么需要宏和VBA?”
    并非想要上纲上线,但是从宏观的角度看,我认为,这是因为世界上不存在完美的事物,同样也不存在完美的软件。虽然微软通过升级在不断地完善Office系列软件的功能,使其标准功能已可以满足日常绝大部分的应用,但也逃不过这个规律。于是微软便聪明的整合了宏和VBA到它的产品中,给用户留下了可以自行去定义属于自己需求的软件的可能性(多说一句,WPS还需要继续努力啊,在这点上还差的太远了)。
    那么,什么情况下我们需要宏和VBA呢?
    形象的说,“宏”像一个机器人,VBA是用来制作宏这个“机器人”工具和零件。当我们遇到下列问题时,我们就可以想到使用它们了(可能不全):
    1. 劳动强度大,重复性高的工作,比如每月报,周报等。
    2.Office本身一些功能的细节控制与完善,如数据透视表(Pivot Table)等。
    3. 和其它系统的交互,如数据库系统 
    4.       ……
    所有这些,我会在今后的文章中陆续讲到,也希望大家持续关注。
    值得注意的是,宏的录制和VBA的编写是需要时间的,一定要权衡是否需要做一个宏或者VBA
    最后,VBA和宏的区别是什么?
    刚才已经提到了,“宏”像一个机器人,VBA是用来制作宏这个“机器人”工具和零件。如果再进一步说明,宏就像是一个录音机或者录像机,只是它所录制的是你的操作自动制作一个“机器人”给你。当你需要重复操作的时候,只需要按一下启动键,“机器人”就会开始干活儿,而你则可以喝茶,抽烟,喝酒,聊天, XXOO… …
    听起来很美是不是?仿佛不论你是否掌握VBA编程技巧,你都能利用宏去制造“机器人”。但是,你必须掌握VBA,这是因为:
    1. 电脑不是人脑,至少目前还取代不了,有些时候一个微小的差别就会使你的宏失效,比如说文件名和文件结构的改变等。使得你尽心费力做好的宏可以被重复使用的可能性大大降低。
    2. “机器人”出了故障,你必须知道怎么修。
    3. “机器人”中可能会存在很多可以被其它“机器人”重复使用的“零件”,只有掌握了VBA,你才能做到自己建造“机器人”

    四、录制一个宏

    点击录制宏

    进行操作,操作结束后停止录制宏,然后我们进入Visual Basic可以查看我们已经录制好的宏

    五、编写第一个宏

     在Visual Basic中插入新的模板,输入,表示在B2单元格输入abcd

    1 Sub 输入()
    2     Range("b2") = "abcd"
    3 End Sub

     

    转载于:https://www.cnblogs.com/bldly1989/p/6625707.html

    展开全文
  • 二 详解VBA编程是什么

    2020-07-01 23:33:29
    详解VBA编程是什么 直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动...

    详解VBA编程是什么

    直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),可以认为 VBA 是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是"寄生于"VB应用程序的版本.VBA和VB的区别包括如下几个方面:

    1. VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(EXCEL等)自动化
    2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序.
    3. 要运行 VB 开发的应用程序,用户不必安装 VB,因为 VB 开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL.
     

    尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA创建解决方
    案的大部分知识.


    * VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.


    * VBA可以称作EXCEL的"遥控器".


    VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.


    此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.

     

    VBA编程

     

     EXCEL环境中基于应用程序自动化的优点

    也许你想知道VBA可以干什么?使用VBA可以实现的功能包括:
    1. 使重复的任务自动化.
    2. 自定义EXCEL工具栏,菜单和界面.
    3. 简化模板的使用.
    4. 自定义EXCEL,使其成为开发平台.
    5. 创建报表.
    6. 对数据进行复杂的操作和分析.

    用EXCEL作为开发平台有如下原因:


    1. EXCEL本身功能强大,包括打印,文件处理,格式化和文本编辑.


    2. EXCEL内置大量函数.


    3. EXCEL界面熟悉.


    4. 可连接到多种数据库.


    用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存,打印,复制等.而用EXCEL作为开发平台,则由于EXCEL已经具备这些基本功能,你要做的只是使用它.

     

    录制简单的宏

    在介绍学习VBA之前,应该花几分钟录制一个宏。

     


    新术语:"宏",指一系列EXCEL能够执行的VBA语句。


    以下将要录制的宏非常简单,只是改变单元格颜色。请完成如下步骤:


    1、打开新工作簿,确认其他工作簿已经关闭。


    2、选择A1单元格。调出"常用"工具栏。


    3、选择"工具"-"宏"-"录制新宏"。


    4、输入"改变颜色"作为宏名替换默认宏名,单击确定,注意,此时状态栏中显示"录制",特别是"停止录制"工具栏也显示出来。替换默认宏名主要是便于分别这些宏。


    ★ 宏名最多可为255个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。


    5、选择"格式"的"单元格",选择"图案"选项中的红色,单击"确定"。


    6、单击"停止录制"工具栏按钮,结束宏录制过程。

    ※ 如果"停止录制"工具栏开始并未出现,请选择"工具"-"宏"-"停止录制"。
    录制完一个宏后就可以执行它了。

     

     

    执行宏

    当执行一个宏时,EXCEL 按照宏语句执行的情况就像 VBA 代码在对 EXCEL 进行"遥控"。但VBA 的"遥控"不仅能使操作变得简便,还能使你获得一些使用 EXCEL 标准命令所无法实现的功能。而且,一旦熟悉了 EXCEL 的"遥控",你都会奇怪自己在没有这些"遥控"的情况下,到底是怎么熬过来的。要执行刚才录制的宏,可以按以下步骤进行:

     


    1、选择任何一个单元格,比如A3。


    2、选择"工具"-"宏"-"宏",显示"宏"对话框。


    3、选择"改变颜色",选择"执行",则 A3 单元格的颜色变为红色。试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。

     

    查看录制的代码

    到底是什么在控制EXCEL的运行呢?你可能有些疑惑.好,让我们看看VBA的语句吧.
     

     

    1、选择"工具"-"宏"-"宏",显示"宏"对话框。


    2、单击列表中的"改变颜色",选择"编辑"按钮。
    此时,会打开 VBA 的编辑器窗口(VBE)。关于该编辑器,以后再详细说明,先将注意力集中到显示的代码上。代码如下:(日期和姓名会有不同)
    Sub 改变颜色()
    '
    ' 改变颜色 Macro
    ' xw 记录的宏 2000-6-10
    '
    '
    With Selection.Interior
    .ColorIndex = 3
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    End With
    End Sub
     

    将来会十分熟悉这种代码,虽然现在它们看上去像一种奇怪的外语。学习 VBA 或编程语言在某
    种程度上比较像在学习一种外语。


    Sub 改变颜色():这是宏的名称。
    中间的以" '"开头的五行称为"注释",它在录制宏时自动产生。
    以With 开头到End  With 结束的结构是With结构语句,这段语句是宏的主要部分。注意单词"selection",它代表"突出显示的区域"(即:选定区域)。With Selection.Interior :它读作"选择区域的的内部".这整段语句设置该区域内部的一些"属性"。


    其中:
    .ColorIndex = 3: 将该内部设为红色。注意:有一小圆点,它的作用在于简化语句,小圆点代替出现在With后的词,它是With结构的一部分。另外:红色被数字化为3.(红色警戒是否可称作:3号警戒,嗯?)有兴趣的话,你将3改为其他数字试试看。
     

    .Pattern = xlSolid:设置该区域的内部图案。由于是录制宏,所以,虽然你并未设置这一项,
    宏仍然将其记录下来(因为在"图案"选项中有此一项,只是你未曾设置而已)。xlSolid 表示纯
    色。
     

    .PatternColorIndex = xlAutomatic:表示内部图案底纹颜色为自动配色。


    End With:结束With 语句。


    End Sub:整个宏的结束语

     

    编辑录制的代码

    在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上并不起作用。哪两句?
    现在,在宏中作一个修改,删除多余行,直到和下面代码相同:
    Sub 改变颜色()
    '
    ' 改变颜色 Macro
    ' xw 记录的宏 2000-6-10
    '
    '
    With Selection.Interior
    .ColorIndex = 3
    End With
    End Sub

     


    完成后,在工作表中试验一下。你会发现结果和修改前的状况一样。在 With 语句前加入一行:

    Range("A5").Select
    试着运行该宏,则无论开始选择哪个单元格,宏运行结果都是使A5单元格变红.


    现在可以看到,编辑录制的宏同样非常简单。需要编辑宏是因为以下三个方面的原因。

    一:在录制中出错而不得不修改。

     

    二:录制的宏中有多余的语句需要删除,提高宏的运行速度。

     

    三:希望增加宏的功能。比如:加入判断或循环等无法录制的语句。

     

    录制宏的局限性

    希望自动化的许多 EXCEL 过程大多都可以用录制宏来完成.但是宏记录器存在以下局限性.
     

     

    通过宏记录器无法完成的工作有:


    1、录制的宏无判断或循环能力.


    2、人机交互能力差,即用户无法进行输入,计算机无法给出提示.


    3、无法显示EXCEL对话框.


    4、无法显示自定义窗体.

     

    小结

    本章节中,你已经掌握了 VBA 的一些基础知识,你会录制宏、编辑宏而且了解了录制宏的局限性,并且已经为将来学习VBA甚至VB等编程语言打下了基础.关键是你已经了解了一个谜底,就是说,你了解了什么是编程.下面是些小练习。

     


    思考:
    1、VBA只能用于EXCEL吗?


    2、VBA是基于哪种语言?


    3、说说EXCEL和VBA的关系.


    4、为什么要用宏?

     

    展开全文
  • 每天一篇原创Excel图文微信公众号:Excel星球NO.81-什么是变量?作者:看见星光微博:EXCELers / 知识星球:Excel哈罗,大家好,我是星光,今天给大家聊一下编程中一个非常重要的概念——变量。变量这个词有些朋友...
    ebbcfaa9cfc3e0f52fe4fdb6d04d495d.png 每天一篇原创Excel图文 微信公众号:Excel星球 NO.81-什么是变量? 作者:看见星光  微博:EXCELers / 知识星球:Excel

    哈罗,大家好,我是星光,今天给大家聊一下编程中一个非常重要的概念——变量。变量这个词有些朋友可能感到陌生,但其实就概念来说,无论在生活中还是在学习上,变量都是无处不在的。
    你的身高是变量,你小时候身高=1米2,后来你长大了,身高=1米8。你考试的成绩是变量,你小时候学渣,成绩=45,你长大了学霸,成绩=150。你玩王者荣耀时角色的生命值也是变量,满血时生命=3200,残血时生命=300;你一顿操作猛如虎,一看战绩……9-0,战绩=9-0还是变量——所以,什么是变量?变量在编程中的意义和作用是什么?

    什么是变量


    所谓变量,就是储存数据的容器,就好比贴着标签装着数据的盒子。标签是变量的名称,不占据盒子内的空间,比如身高 ;盒子里装着的数据是可以改变的,比如1米2,后来变成了1米8等。
    ……我们可以把计算机看成是一个人,它的脑袋十分巨大,里面整齐的摆放着成千上万个小盒子,也就是脑细胞;每一个小盒子都是一个空间,有 多种类型 ,可以装各种的数据;但一个盒子只能放一个数据。我们只有将数据装到计算机的脑袋里,才能让它帮助我们分析和处理数据——那我们如何将数据装到计算机的脑袋里去?
    打个响指,很简单,代码如下。
    身高=180

    代码中的"="是赋值符号(不是判断符等于号,两者的区别我们以后会聊)。这句代码的意思是我们在计算机的大脑袋里申请了一个小盒子,贴上标签: 身高 ,盒子里装上数据: 180 。这样一来,计算机就知道名字为 身高 的小盒子里装着数据 180 了。
    后来一段时间你吃了好多鱼……好吧,还吃了不少卫龙辣条,于是身高莫名其妙长高了,我们得把这事告诉计算机,把身高数据更新一下。
    身高=190

    于是计算机按照标签 "身高" ,取出小盒子。由于一个盒子只能放一个数据,要装新的数据,计算机就会用新数据覆盖掉旧数据,所以最后名为 "身高" 的小盒子里装着数据是190。
    试试按分步运行以下Sub过程,在本地窗口观察 "身高" 的变化,以及最后返回的值是多少?
    Sub 变量()    Dim 身高 As Byte    身高 = 120    身高 = 130    身高 = 140    身高 = 140    身高 = 180    MsgBox 身高End Sub

    如你所想,这里名为"身高"的小盒子即是变量,很显然,它有两部分构成:名称和值, 值可以变,但名称不变 ,以不变应万变。
    就这么回事。 什么是声明变量 我们上一节讲过,数据是有类型的,在VBA中数据的类型可以划分为……上一章的那么多种(摊手,没办法,我就是这么懒,别指望我重说一遍)。而变量是装数据的容器,也是有类型的。简而言之,数据有多少类型,变量就有多少类型。 声明变量,就是给数据指定不同类型的小盒子,并贴上标签名字。
    在VBA中如何声明变量呢?最常见的是使用Dim语句。语法格式如下:
    Dim 变量名 As 变量类型

    我举个一个小栗子。
    Sub 声明变量()    Dim 身高 As Byte    身高 = 180    身高 = 300End Sub
    ▎代码解析:
    第2行代码, Dim 身高 As Byte 是声明变量,意思是向计算机申请一个专门用来装Byte数据类型的小盒子,1个字节大小,范围是0~255之间的整数,并贴上标签"身高"。
    第3行代码,身高=180,想必你已经知道什么意思了,给变量身高赋值,也就是往名为"身高"的小盒子里装入一个数据180。
    第4行代码,身高=300,想必你还是知道——但其实你不知道,微微笑。咱们在第2行代码声明了变量 身高 的类型是Byte,所以只能用来装0~255之间的整数,这里却要求计算机装300。 盒子太小,它装不下,于是会弹出一个提示溢出的警告框,同时中断程序运行:

    4df791aa714cb860fb89a61ed4e8e903.png


    ……
    有个叫 看见我蓝了吗? 的网友发来提问:星光大熊迪,请问声明变量是必需的吗?
    答:……这个问题,有两种情况。一种是声明了变量,但没有指定类型,示例代码如下。
    Sub 变体变量()    Dim 身高    身高 = 120    身高 = "我很高"    MsgBox 身高End Sub

    第2行代码中声明了变量"身高",但没有指定类型,则系统默认为变体型。什么是变体?咱们上节课讲过了。变体型变量就像一个万能的小盒子,啥都能往里装,它会自动调整数据类型。第3行代码 身高=120 ,我们往名为"身高"的小盒子里装了个数值120;第4行代码 身高="我很高" ,我们往小盒子里又装了个字符串"我很高",同时覆盖掉了旧数据120,此时小盒子装的就是字符串"我很高"。
    还有一种情况,变量声明都不声明,带头大哥附体挽起袖子直接干,示例代码如下:
    Sub 变量不声明就用()    身高 = 120    身高 = "我真的很高"    MsgBox 身高End Sub

    这段代码并没有声明变量身高,第2行代码直接就赋值了。系统同样默认身高为变量,类型为变体,作用类同上一段代码。
    这时可能有朋友就想了,既然变体变量什么都能装,还会自动调整数据类型,连声明都可以省了(能偷懒?激动的搓搓手),那干嘛还声明变量呢?直接举国体制一刀切,全部用变体不就行了?
    长者曰:小同志,你这个想法很大胆啊。变体变量确实省事又好用,但是,一来它占据的内存空间可能比较大——好吧,咱是有别墅的人了,这点大部分情况下都不重要;但麻烦的是变体不够聪明,怎么不够聪明法?——咱们后面有个单章专门再聊。
    ……
    有个叫 姐要三宫六院七十二男妃 的网友发来提问:星光哥哥,你举的例子都是声明一个变量,如果需要声明多个变量,代码应该怎么写?
    答:可以一行代码声明一个变量,多个变量用多行声明。示例如下。
    Sub 多行声明多个变量()    Dim s As String '声明变量s为字符串    Dim i As Long '声明变量i为long    Dim j As Long '声明变量j为longEnd Sub

    另外,VBA是支持一行代码声明多个变量的,不过每个变量都需要指定数据类型, 如果没有指定数据类型,则默认为变体Variant 。
    举两个例子,下面是一行代码声明了多个变量,每个变量都指定了类型,只在开头使用了一个DIM。代码如看不全,可以左右拖动..▼
    Sub 一行代码声明多个变量()    Dim s As String, i As Long, j As LongEnd Sub

    下面也是一行代码声明了多个变量,但只在最后一个变量指定了类型为字符串。在有的编程语言中,这意味着a/b/c三个变量都是字符串类型,但在VBA中不是,只有c是字符串类型,a/b没有指定类型,则默认为变体。
    Sub 一行代码声明多个变量()    Dim a, b, c As StringEnd Sub

    ……
    还有个叫 和尚洗头用飘柔 的网友发来提问:在泡论坛时,经常见到有人声明变量i%,j&,s$,d#,请问%&$#是什么鬼? f4fa9226207097b6d9ac3f58a86f173f.png
    答:和尚莫慌,我有李云龙画像在此。它们不是鬼哩,是类型声明符,或者说变量类型缩写。不过不是所有的数据类型都支持声明符,常用的只有4个。其中%是整数型Integer(其实已经不常用了,但看古董级代码时会见到),&是长整形Long(最常用的一个),$是字符串string($看起来就像string的首字母s),#是双精度浮点Double(#可以理解为双精度的双)。
    ……聊完了如何声明对象,看个广告放松一下,接下去咱们再说下如何为变量赋值。
    如何为变量赋值
    所谓为变量赋值,是指把数据储存到变量中。常见的有两种情况;一种是非对象类型的变量赋值,比如数值、字符串、日期等;一种是为对象(Object)类型的变量赋值,比如工作表等。
    先说一下非对象类型的变量赋值——其实你已经会了,也就是类似咱们前面小节所使用的语句 身高=120 。它的完整语法如下:
    [Let] 变量名=值

    其中关键字Let是可以省略的,正常情况下,也都是省略的。 所不同的是为对象类型的数据赋值 ,比如工作簿、工作表、单元格等对象。语法如下:
    Set 变量名=值

    语法中的关键字Set是不能省略的,不然你会找不到对象——看我眼神,骗你娶你,不论男女。
    举个例子,将当前活动工作表赋值给变量sht,代码如下。
    Sub 对象变量赋值()    Dim sht As Worksheet '定义变量类型为工作表。    Set sht = ActiveSheet '将当前工作表赋值给变量sht    MsgBox sht.Name '消息框显示当前工作表的名称End Sub

    第3行代码是将当前工作表赋值给变量sht,这时关键字Set是不能省略的,如果省略Set,系统会发出如下所示的警告对话框,同时中断程序运行。 9441644a1b0e864b178da8d647a33fdb.png 贴士: ▎为对象类型的变量赋值时遗漏Set,是新人最常见的错误;如果你以后也经常犯这样的错误,麻烦告诉我一声你到底有没有对象,是不是从来没被掐破肉过?多么痛的领悟!!!……我朋友。
    ……
    打个响指,再给大家看另一个很典型的变量赋值的小栗子。
    Sub 累加变量()    Dim k As Long    k = 1    k = k + 1    MsgBox "变量k的值是:" & kEnd Sub

    ▎代码解析:
    第2行代码是声明变量,其名为k,其类为long,k之大,你知我知庄子不知。

    第3行代码为变量k赋值,其值为1。

    第4行代码是k=k+1,想一想,这句代码是怎么运行的?

    第5行代码使用消息框显示结果为2,猜一猜,为什么是2?

    1733e6136dd871daa822f6f3638959e0.png

    代码之所以返回变量k的值为2,是因为语句k=k+1的作用是将k在原值(本例为1)的基础上增加了1。

    那么计算机是怎么运行k=k+1的?

    这句代码包含了两个操作符,一个是"+",另一个是赋值号"="。"+"的运算优先级要高于"=",因此计算机先执行k+1,结果为2;然后再执行赋值,将2赋值给变量k。

    这就是一个典型的变量=表达式的赋值语句。

    那么,再思考一下,下面的语句会返回什么呢?为什么?

    Sub 测试()    Dim k As Long    k = 1    MsgBox k + 1 = kEnd Sub

    那谁,您先想着,我这有点事,就先走了。噢,对了,麻烦记得关注我一下,关注不迷路,见面不尴尬,你说是不是这理儿?握手,咱们下期再贱。

    ▎系统学习Excel
    推荐加入我的Excel社群 ▎ 66ade44a3eb27060b56fb7a8cdd4a7f7.png 扩展阅读 f65debe514c6ced430d910c022c7fad9.png 48c41e70f6729924a8fef258bdf28ad2.png 497ff197f0890553000bd03bab814f68.png
    展开全文
  • Hello,大家好,在前面我们说过Excel...那什么是VBA的数组呢?VBA数组可以理解成是储存的一组数据的一个地方。他的数据类型可以是数字,文本,对象,当然也可以是VBA数组。可能有些同学会觉得比较抽象,但是经过慢慢...

    Hello,大家好,在前面我们说过Excel函数中间的数组含义,那么你是否知道VBA中间的两个数据处理利器字典+数组呢?他们一旦结合起来将会发挥无可估量的作用,提升执行效率就在分秒之间。今天我们先说说数组,在下期我们会说说字典。

    15ba06bdea0a2ef4f1b82ccefa383f77.png

    那什么是VBA的数组呢?

    VBA数组可以理解成是储存的一组数据的一个地方。他的数据类型可以是数字,文本,对象,当然也可以是VBA数组。可能有些同学会觉得比较抽象,但是经过慢慢的学习就不会觉得抽象啦!

    或许在你心里会默默有一句话想问,我为嘛要学习数组呢?这么抽象的概念?当你听到他的优点以后,就会不这样想了。他的优点简而言之有2点,加快程序执行速度和简化代码功能,不要小看这2个作用,当你学习到后面就会发现你花很多精力在VBA对象上面是多么不明智的选择。

    如下2个例子,可以看到使用数组耗时0.039,而没有使用数组耗时6秒,数组的运算速度是没有使用数组的153倍,相信你肯定看到这么一个小的地方,速度竟然相差这么多?

    029b9bf069b147da39b704a8b330ed2c.png

    这个其实是和VBA的数组运算原理有很大的关系,VBA中的运算最终是在内存中进行的,如果数据已经在内存中,则直接进行运算,但如果数据是储存在单元格里则还需要先把数据从单元格里调入到内存中,然后再在内存中对数据进行运算.

    ac089c69c5da35899e7f8bccdd0515d2.png

    既然已经知道数组的重要性了,那么你可否知道VBA数组有哪几个分类?

    它可以分为2大类,如下:

    按维数划分:1维、2维…….60维

    按储存类型划分:静态数组、动态数组、常量数组

    1维数组:横向排列的一组值。

    代码如下所示,以下为1维数组和2维数组,我们用的最多的就是这2种,所以可以先了解这些。多维数组依次类推而已。

    41137c0747f05e299b26650817101244.png

    常量数组,arr = Array(1, 2, 3, 4, 5),数组Arr就是一个常数数组,他有5个常数元素,这个比较好理解吧!

    静态数组:顾名思义,就是数组的区域大小是固定不变的,一旦超出这个区域就会提示错误。Dim arr(1 To 10, 1 To 2) ,这个就是声明arr是一个10行2列的二维数组,你明白木有?

    动态数组:就是他的区域大小不固定的数组,这个在我们以后的工作中间,用的最多的就是这个动态数组啦!所以这个理解好这个非常重要,动态数组的声明方法和静态数组声明的方法稍有不同,动态数组是需要先用Dim声明是动态数组,当我们的数组大小一旦被确认了,还需要再次用Redim进行二次声明。

    例01,step-01 Dim arr(),这是先定义为动态数组

    Step-02 Redim arr( 第一维数组上标 to 第一维数组下标,第二维上标 to 第二维下标)

    举一个实例来说明吧!如下所示的,看了这个你肯定就明白了上面的那2个步骤了,step-01等同于Dim arr(),step-02等同于ReDim arr(1 To k),就这样我们完成动态数组的处理。

    e7027f6b4102c429c3f9ffafce4c72c1.png

    PS:需要注意的是,如果我们的数组需要随某个变量进行不断的扩充(减少),那么数组就需要多次进行声明,每扩充(减少)一次就声明一次;另外说一点如果数组是多维的,只能动态声明第末维的,如果需要把让第一维不断扩充,还需要先转置,这个处理方法比较麻烦,在我们以后会说到这个的处理方法,在这里先请熟记上面的知识点。

    1cde71413196d3964f782393fc51d1c1.png

    自此你肯定有疑问了,数据如何放在Excel中间呢?一起来看看,如下图所示的操作方法,这个例子说明了2个方法,把excel的数据赋值到数组(arr = Range("a2:d5")),把数组赋值到Excel中间(Range("a2:d5") = arr ),相信聪明的你肯定看到了。

    88d0f002bafabd0913531b6d28e516a3.png

    现在我们说说的几个简单的运算吧!一起来加深对数组的了解。

    VBA数组的大小确定,也就是我们说的上标和下标,通俗上说就是开始的位置和结束的位置值。

    77da4f0ba2241e0d913b37b0d2a9ec0f.png

    VBA数组的数据处理之筛选操作,就是在一个数组中间帅选出来我们需要的数据。这个的使用方法很简单,就是数组= VBA.Filter(要帅选的数组, 帅选条件,是否包含这个),怎么是不是很好理解?

    de3ec4049101b2e49cd6ec05b4874d4b.png

    VBA数组数据处理之拆分与合并

    1c285d3d962eef3cfe80dcfad49f006b.png

    求VBA数组的中间的最值方法

    3037063c232d92cf8a538a9ca039dce2.png

    数组的统计与求和

    4005f46c3ec646ec0ee24441dcb5d64b.png

    数组的查询和处理工作

    8eea87fda55d88876dce082f04543a97.png

    数组的拆分,这个在处理数组的数据时候,经常用到:

    256b816b8c48596e53d793eff07d5ea1.png

    怎么样,小伙伴们,您学会使用使用Excel VBA数组的基本概念和常用的使用方法了吗?相信你如果能够熟知上面的知识点,那么你对数组就能够入门了,有不懂的,有疑问的,可以下面进行留言。

    b24b4444f335cd1c586015fb536fecad.png

    如果小伙伴还有其他的想知道或者想了解的,都可以直接先关注我然后在私信我,告诉我们您想知道什么,或者想了解什么,我们会根据你的需要进行扩展的,谢谢大家的支持!

    如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。

    54983029eb965a1b7ffd40c16d3f6fe2.png

    我是Excel教案,关注我持续分享更多的Excel技巧!

    展开全文
  • vba网抓常用方法

    2018-02-07 16:32:37
    利用VBA模拟向服务器发送请求,接收服务器返回的数据。 抓取网页数据类似与网络爬虫有代码
  • Vba变量的作用

    2019-06-18 16:40:51
  • http://www.pinlue.com/article/2020/05/0416/2310305502353.html
  • 函数作用:取消隐藏工作表(包括vba Project工程保护的)88 '75.函数作用:删除单元格自定义名称.....................88 '76.函数作用:从文件路径中取得文件名...................89 '77.函数作用:取得一个文件的扩展...
  • Multiline:控制字符串为单行还是多行模式 单行模式: 只有一个行首,字符串的最前面;一个行末,字符串的最后面 多行模式: 每行都有一个行首和行末 Mulitiline的设置只会对正则符号:^和$ 有影响 ...
  • VBA基础打卡

    2017-11-13 23:19:30
    vba
  • VBA开发手册

    2013-10-29 15:06:51
    掌握了VBA,可以发挥以下作用: 1.规范用户的操作,控制用户的操作行为; 2.操作界面人性化,方便用户的操作; 3.多个步骤的手工操作通过执行VBA代码可以迅速的实现; 4.实现一些无法实现的功能。
  • VB和VBS、VBA的区别及作用

    千次阅读 2020-10-24 17:39:25
    VBScript是微软开发的一种脚本语言,可以看作是VB语言的简化版,与VBA的关系也非常密切。它具有原语言容易学习的特性,并继承了JavaScript的跨平台的特性。目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接...
  • WPS软件vba的对象属性大全,开发文档;VBA属性
  • 一 谁的作用范围? 不同对象的作用范围完全不是一回事,不要混淆 比如 sub 和 sub里的变量a 作用范围不是一回事 public sub sub1() dim a end sub 二 sub 和 function的作用范围 2.1 语法 public sub sub...
  • 和有道翻译的屏幕取词快捷键F8冲突,更改后正常了。
  • vba中变量作用

    2017-08-30 11:46:00
    参考:http://club.excelhome.net/thread-1237085-1-1.html 全局变量例子public 变量1 AS IntegerSub LLL()变量1 = 1111End Sub模块级变量例子DIM 变量1 AS IntegerSub LLL()变量1 = 1111End Sub ...
  • sub内的代码,声明周期也是过程级,应该不影响其他吧 ...1变量的声明范围(作用范围) 1.1 跨模块级变量(模块内,过程外) public 1.2 模块级变量(模块内,过程外) public dim private 1...
  • 使用VB对VBA开发的窗体进行封装成DLL,窗体作用:根据配置的Excel基础数据表,在其他工作表中使用模糊查询赋值(当使用 序列 时,如果列表很长时,可以使用该工具)
  • 书上说,经济学分析的要素包括劳动、资本、土地和企业家才能,这些要素分别属于不同的所有者,要素的所有...”) 方法:工具——VBAProject属性——保护 确定后保存文件,我们如果想再打开看代码,就会看到如下景象:
  • 在excel里有些文本和数字混合在一起,但又想对其中的数字进行求和计算,这时应该怎么办呢? 这个混合文本数字求和.bas就起作用了。
  • VBA 类模块理解和使用总结

    千次阅读 2021-04-19 18:52:59
    VBA 类模块理解和使用总结 一、类的概念 记得有人总结,VBA是基于面向对象(OOP)的编程语言,而java是完全面向对象的编程语言,为了更好地理解面向对象,去学习了一下java,现在回过来看VBA的面向对象特性就比较好...
  • 每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel嗨,大家好,我是星光,今天咱们来继续学习VBA编程。在零基础学Excel的入门教程里咱们讲过,...
  • vba中format的用法

    2019-10-09 08:29:58
    VBA中Format 集合 使用方法。 - kongwei521的专栏 - CSDN博客 https://blog.csdn.net/kongwei521/article/details/7176583
  • VBA EXCEL 心得总结

    2021-07-12 11:21:42
    好长时间不用VBA,遗忘的厉害,花时间总结一下。 VBA挺简单的,有java或编码基础的人,上手很快的。 总结:(日文操作系统为例) 1.新建exel文件,后缀为.xlsx或其他,打开excel文档,文件另存为.xlsm格式的excel...
  • 作用域不同,存放位置,声明的方式不同 举例1 结果只显示工程级,模块级,模块级变量,过程级变量只能在过程里引用 举例2 新建模块2,复制以上代码,运行主程序过程,结果只显示工程级变量,说明模块级变量不...
  • 我们知道了什么是变量。也就可以理解知道了拿酱油瓶,里面有酱油。那么问题来了,你拿谁家的酱油瓶呢?是自己家的,还是隔壁老王家的?这就涉及到了变量的作用域。 变量的声明很简单,就是告诉计算机,这个变量是...
  • VBA插入行和插入列的作用

    千次阅读 2017-07-01 00:44:51
    VBA插入行和插入列的作用域,跟是否有ActiveSheet修饰强相关,前面加了ActiveSheet指定作用域则在已经select的工作表生效,否则,会在代码所在的工作簿的工作表生效,例如: Sub aa() Windows("打开excel.xls")....
  • 每天一篇Excel技术图文微信公众号:Excel星球NO.79-什么是数据类型?作者:看见星光微博:EXCELers / 知识星球:Excel嗨,大家好,我是星光,今天咱们来继续学习VBA编程。在零基础学Excel的入门教程里咱们讲过,...
  • VBA 调试

    2019-10-07 06:45:48
    VBA 调试 F9:设置程序断点,在代码左侧栏点击有相同效果。重新按F9即取消断点。 F8:单步跟踪,当调用子函数会跟踪到子函数内部 Shift+F8:单步跟踪,但不会进入子函数内部 Ctrl+Shift+F8:跳出...
  • Vba菜鸟教程

    万次阅读 多人点赞 2020-05-02 18:21:15
    文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,923
精华内容 1,969
关键字:

vba的作用是什么