精华内容
下载资源
问答
  • 网络上有很多的EXCEL教程...今天,我们模拟sum函数编写一段简单的代码,体会编写的过程,对VBA代码有一个简单的印象。 当然这段代码是理想化的过程,我们没有设定更多的灵活性,没有提供让使用者自选求和区域的功能...

    网络上有很多的EXCEL教程,有些教程简单明了,有些教程让人摸不着头脑。为什么?因为基础知识还没讲就上了一堆代码,让没有基础的人看了也看不懂,或者有代码也可以,那就结合基础知识一起讲,让人明白来龙去脉,学一段明白一段。今天,我们模拟sum函数编写一段简单的代码,体会编写的过程,对VBA代码有一个简单的印象。

    0cdc5d65ed5e61289bd22b1f99948c5f.png

    当然这段代码是理想化的过程,我们没有设定更多的灵活性,没有提供让使用者自选求和区域的功能,没有去判断这些求和的数据类型,假定了一个双精度浮点型的结果,也没有去判断每个单元格的内容是否是数字,如果是文本,就肯定不能完成求和,代码执行的过程就会出现错误 代码如图所示:

    18bf7b71559c2645e2552cc009f2711f.png

    在这段代码中,sub与end sub都是成对出现的, 是定义过程的必须元素,代码从sub开始至end sub结束。sum是这个过程的过程名,如果要从其他过程调用这个过程,就是通过 call 过程名来调用。Dim是dimension的缩写,字面意思是标出这个变量的尺寸,实际上就是定义数据类型。这里定义了一个双精度浮点型的变量result,用来存放求和的结果。接着定义了没有数据类型的变量arr,通过arr=activesheet.range("a1:a10")来给 arr赋值,“=”是赋值符号,意思就是把等于号后面的值存储到变量所代表的内存空间。for each 是遍历对象或数组的循环结构,在这里就是访问数组里的每一项,i就代表这一项的内容。每访问一项,就通过result=result+i,把i累加到result,这个result=result+i就是把result原来的值加上 i再存回result变量,通过next i,这个循环把i反复相加,直到arr的末尾。最后把在result中的相加结果显示在活动工作表的b1单元格中。activesheet代表当前处于活动的工作表,range就是工作表的中的区域,这个区域可以是一个单元格,许多连续的单元格,许多不连续的单元格,一整行或一整列,只要你想把哪些单元格选取出来,这个range都提供了选取的方法。

    通过上述的描述,我们简单的实现了单元格的求和过程,当然这个过程可以不通过数组,可以直接访问每个单元格进行求和,之所以要赋值给数组,因为这样可以提高速度,减少等待的时间。

    展开全文
  • 每天一篇原创Excel图文微信公众号:Excel星球NO.71-什么是VBA作者:看见星光微博:EXCELers / 知识星球:ExcelHI,大家好,我星光,今天咱们来继续学习VBA。在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了...
    5bc46a3ae59eecc6111739463d9a2cba.png每天一篇原创Excel图文微信公众号:Excel星球NO.71-什么是VBA作者:看见星光 微博:EXCELers / 知识星球:Excel

    HI,大家好,我是星光,今天咱们来继续学习VBA。在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了还有没有用~零基础学VBA编程01:VBA还能不能学?学了还有没有用?

    这一章咱们再来简单回答几个小问题:什么是VBA?如何编写和运行VBA代码?

    什么是VBA先来看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?“VBA!“VBA是什么呀?“VBA就是……反正很厉害,它可以减少很多重复性的工作,可以很轻松就让Excel简易化自动化智能化,你听我说,它还可以做人机交互界面,完成Excel自身功能无法完成的高度复杂的任务,还能够一键生成Word和PPT,你说厉害不厉害?“听不太懂哎——它和VAR是什么关系?没关系?那和BRA呢?也没关系?那V是什么?B是什么?A又是什么?“……”你很茫然,于是想起了那个叫百度的混蛋,默默搜索了一番。什么是VBA?VBA是Visual Basic For Application的简称,是VB语言的一个分支,是一种建立在Office应用程序中的开发工具,是……——然而知道这概念也啥实际用处,因为你的异性朋友依然听不懂你在说什么。“还是听不太懂哎,对了,VBA是不是宏?“宏?“就是病毒!“病毒?不不不,有的不是病毒,有的……”“那就是病毒咯!你无语,只好继续百度。什么是宏?宏来源于英文单词“marco”,是一种批量处理的称谓,暗示着将小命令或动作转化为一系列指令,是软件提供的一种特殊功能,也就是说宏并非Office软件所独有,因此从广义上来说,VBA确实是一种宏,但宏却未必是VBA……宏是不是病毒?这就好比问人是不是好人?人当然有好人也有坏人,好人也可能做坏事,坏人也可能做好事,人是不是好人,得看在某个时间里TA做了什么事,这就不是薛定谔的猫……“VBA是一种非常简单实用的编程语言,它可以做坏事,也可以做好事……”你尝试着解释。“编程?那小胖你就是程序猿咯?”她看了看你的发际线,“嗯,看起来确实有一点儿像。”“不……不是……你误会了!程序猿是一个职业的称呼,并不是会一点编程就是程序猿,还需要穿格子衫,还……”“听不懂哎。”她看着你的发际线。“……”……且不管你的发际线到底怎么样,咱们还是大体了解了VBA是什么,那么——如何编写VBA呢?谈到编写VBA,就不得不说一下VBE……什么是VBE大部分编程语言都有自己的集成开发环境IDE(Integrated Development Environment),它为用户提供了代码编写功能、分析功能、调试功能等,比如语法高亮、语句自动补全、参考资料……VBA也不例外,VBA的代码编辑器依托于Office软件,又被称为VBE(Visual Basic Editor)窗口——换句话说,VBE窗口也就是咱们以后编写VBA程序的地方。长相有点儿寒酸,如下图所示。8ca278b3d38db55f8dd220c3483f928f.png进入VBE窗口常用方式有以下几种。第1种方式是快捷键。第2种方式是右键单击任意工作表标签,在弹出的快捷菜单中选中【查看代码】命令。801679577976a475bd752df4dc940c2d.png第3种方式是在【开发工具】选项卡中进行操作。……我们知道Excel有功能区,功能区内有选项卡,每个选项卡对应不同的功能分类。比如【开始】选项卡集中了用户最常使用的功能;【插入】选项卡集中了透视表、图形和图表等功能;【页面布局】是打印;【公式】是函数公式……【开发工具】选项卡则属于VBA的地盘。0ed2d684c1f8dfe3675050edb8764818.png不过在默认状态下,Excel功能区并不显示【开发工具】选项卡。这是由于VBA属于Excel的高级功能,既然是高级功能自然要享受一番特殊的待遇——不要说什么人人平等这样骗人的鬼话,毕竟Excel它不是人——这待遇就是关起来不能主动见人在【文件】选项卡中单击【选项】命令,打开【Excel选项】对话框。在该对话框中,单击【自定义功能区】选项卡,在右侧列表框中选中【开发工具】复选框,单击【确定】按钮关闭【Excel选项】对话框,即可在功能区中显示【开发工具】选项卡。b207cab70cd5b4208d563a2d87588a30.png在【开发工具】选项卡中单击【Visual Basic】或者【查看代码】按钮即可进入VBE。992483e73560d09c27426ff97cd10cef.png……打个响指,一起来详细认识下VBE吧,毕竟以后咱们就靠它编写VBA代码了,无论如何总得混个面熟先。认识VBEVBE有菜单栏、工具栏和功能窗口三部分组成。
    菜单栏的选项卡比较多,现在说了你也记不住,就等用到时咱们再说。这里先重点说下功能窗口。
    功能窗口又分为【工程资源管理器窗口】、【属性窗口】、【代码窗口】、【立即窗口】、【本地窗口】等五大窗口。
    2c65a23ae20311ae82c28f9b993e3a16.png不同的窗口功能和作用如下。工程资源管理器窗口工程资源管理器窗口,顾名思义,也就是管理工程资源的地方;这里的工程指的是工作簿中模块的集合。它呈现树形结构,包含4类对象:Excel对象(工作表和工作簿)、模块对象、窗体对象和类模块对象。
    一个新建工作簿的工程资源管理器窗口默认只有工作表对象和ThisWorkbook对象;但我们需要重点了解的是模块对象,绝大多数的VBA过程都是在模块对象中编辑和保存的。
    依次单击【菜单】→【插入】→【模块】,即可生成一个模块和模块对应的【代码窗口。在【代码窗口】中我们可以新建或编辑VBA过程。

    e0f1c8d53f73601d1177dd3d90bd886b.png

    属性窗口属性窗口用来查看和设置对象的属性,比如设置窗体颜色、大小、设置工作表对象的显示状态为深度隐藏等。f9ac90b2295d90e5ed92603e1e99e56a.png代码窗口代码窗口用来显示和编辑VBA代码。【工程资源管理器】中每个对象都拥有自己的代码窗口,双击某个对象,即可在VBE中打开该对象的代码窗口。代码窗口分为上下两个部分,上部为对象列表框和过程/事件列表框,下部为代码编辑区。aa1b2029bd130c15fe093c585bf37857.png立即窗口立即窗口常用于代码调试,在该窗口输入代码,按回车键即可看到代码执行后的结果。除了在立即窗口中直接输入代码外,也可以在VBA代码中使用Debug.Print命令将指定内容输入到立即窗口中,这在代码调试过程中较为常用。2361fce95b049cc8abb621e194ce11e1.png不过需要注意的是,立即窗口和代码窗口不同。当Excel程序关闭后,系统会自动清除立即窗口中的内容。本地窗口本地窗口将自动显示出当前过程中所有的变量声明和变量值,而且会随着代码运行的过程自动更新显示,这是我们调试代码最主要的依据。c425a6351581743010b1ba47c7714beb.png……小贴士:在Excel中,以上窗口并非全部默认显示。单击VBE菜单栏上的【视图】选项卡,会打开一个选项菜单,熊迪们可以根据需要选择显示相应的功能窗口,通常建议至少选择显示【工程资源管理器窗口】、【代码窗口】和【本地窗口】。8da804cb7538a15595e1827408998615.png累了,看段广告提提精神。了解完了VBE代码编辑窗口,下一个问题是,如何编写VBA代码?如何编写VBA代码看我手——歪,图,思锐……编写VBA代码的方式常用的有三种。

    第一种方式:复制粘贴

    别笑,严肃点,俺是认真的。要知道搜罗优秀代码、复制粘贴化为己用是编写程序的基本能力,是程序员不可或缺的左膀右臂,不管你是新手还是高手,天下代码早晚都不过一个抄字——不过咱们得知道哪些能抄?哪些不能抄?哪些抄了之后必须要修改。说到这就不得不推荐一下咱们的VBA常用代码合集了,随时用随时抄,公众号戳【菜单】→【资源礼包】→【VBA常用代码】即可获取。

    第2种方式:自己写

    自己写的意思就是打开VBE,在模块等对象的代码窗口内自己编写VBA代码(这是一句废话)。复制粘贴固然属于天下无双的神技,但并不适合细节迥异的具体问题处理,所以至少你得知道代码的逻辑是否正确;结构是否合理;局部的代码应该如何修改——而有些时候,修改别人的代码,还不如自己重新编写来的爽快。第3种方式:录制宏录制宏的意思是让勤快又善良的Excel帮咱们自动写代码。对于VBA初学者来说,最烦恼的事情莫过于Excel的对象太多了,每个对象的属性和方法又太多了,层层叠叠,头大的让人记不住——其实完全没必要记住,想要知道某个对象的属性和方法?根据需求录制一段宏,查看下Excel自动生成的代码就一目了然了。比如说,你想要知道如何使用VBA代码设置单元格边框线以及标题行文字加粗并居中显示,可以使用以下操作。步骤1:在【开发工具】选项卡下单击【录制宏】命令,打开【录制宏】对话框。根据需要在【录制宏】对话框的【宏名】文本框中输入宏的名称,当然也可以保持默认值不变,然后单击【确定】按钮。23a511929bb25b6401b826103f7b1292.png步骤2:设置A1:D10单元格区域的边框线为所有边框线,将A1:D1标题行的字体加粗并居中显示。最后在【开发工具】选项卡下单击【停止录制】命令,结束录制宏。步骤3:按快捷键打开VBE窗口,在模块中即可看到Excel自动生成的VBA代码。

    5b474aa47d06a3d520b65d3488063b10.png

    以上代码看似繁杂混乱,但如果您已有一定的VBA编程基础,还是不难从中分辨出哪些代码是设置边框线,哪些代码是设置字体加粗和居中显示的;而我们只需要复制相关代码,稍加修改即可直接使用。当然,录制宏的作用不止如此。有一些朋友,出于各种原因无意深入学习VBA,却又希望借助VBA提升工作效率,甚至实现数据处理自动化——当然也是可以的,这就是民间流传的录制宏+函数公式的老男孩组合。a2392c87fd03268ca186b017d2a49644.png借助录制宏,我们可以使函数公式自动输入,进而实现数据处理的自动化。我举一个简单的小栗子。如下图所示,有两张表,一张表是数据源,一张表是查询表。咱们需要制作一个数据查询的模版;在查询表的B列,计算A列人员对应的考试成绩——你会怎么处理呢?7b109c1eab29f9241c8b3669456d7439.png步骤1:在【开发工具】选项卡下单击【录制宏】,打开【录制宏】对话框,在【宏名】文本框中输入内容:我的查询,并【确定】。53b1abb8851dbe0c3e171faab2fb0eaf.png步骤2:在B2单元格输入以下函数公式:
    =IFERROR(VLOOKUP(A2,成绩表!A:B,2,0),"")
    向下复制填充到B2:B5000单元格区域;然后复制B2:B5000单元格区域,使用选择性粘贴为数值的方式,将公式计算结果粘贴为数值,最后停止录制宏。
    如此一来,Excel就自个生成了一段代码,这段代码的作用是自动使用VLOOKUP函数查询A2:A5000单元格范围内的人名在成绩表中的考试成绩。5547d15140cacb77451847963ac420f6.png于是新的问题来了——如何运行这段VBA代码?如何运行VBA代码以运行上述名为“我的查询”的录制宏为例,说下四种常见的优势各异的运行VBA代码的方式。第1种方式:快捷键在【开发工具】选项卡下,单击【宏】按钮,打开【宏】对话框。在该对话框中选中宏名“我的查询”。
    在右侧单击【选项】按钮,打开【宏选项】对话框;设置快捷键为Ctrl+q,最后单击【确定】按钮,依次关闭对话框。
    800a0b84e4a09678a24727d9f5091fa1.png设置完成后,只需按下快捷键,系统就会自动运行相应宏。
    想象一下吧小同志,你背靠皮椅,小眼微眯,手指轻动,一个函数都不漏痕迹,只是按下快捷键,Excel就会自动为你获取数据查询结果,是不是
    秀气满满抑或巴适气侧漏?不过需要注意的是,这里设置的宏快捷键会覆盖Excel默认的快捷键。比如将宏的快捷键设置为,也就不再执行原来的打开【查找与替换】对话框功能了。

    第2种方式:插入按钮

    快捷键的方式虽好,久而不用却难免会忘,此外它也不适合广泛用于制作通用模版。此时我们可以设置一个按钮,通过它来执行指定的宏。在【开发工具】选项卡下依次单击【插入】→【按钮(窗体控件)】按钮。在工作表中绘制一个大小随心的按钮,松开鼠标左键后,系统会自动弹出一个【指定宏】对话框,选中所需宏名,比如本例“我的查询”,单击【确定】按钮,即可将该按钮关联给宏“我的查询”。

    5b43eb047c27460fe64bb2224c341fac.gif

    设置完成后,单击该按钮,即可执行相应的宏代码。小贴士<1>:右键单击按钮,在弹出的快捷菜单中单击【编辑文字】,可以修改按钮的名称,比如修改为“朕要工作了!”

    <2>:除了插入按钮外,也可以插入图形或图片等对象,实现类似关联运行宏代码的效果。

    第3种方式:功能区宏按钮如果一个工作簿的宏命令比较多,以至于你一时间找不到相关按钮的位置,就可以使用这种方式来运行宏了。在【开发工具】选项卡下单击【宏】按钮,在弹出的【宏】对话框中选择【我的查询】选项,单击【执行】按钮即可运行该宏。1ab0b94433342ae0bc5e609acf70b9bb.png

    第4种方式:在VBE中运行宏

    在代码开发过程中,经常需要多次运行和调式VBA代码,此时就需要在VBE中直接运行宏。单击“我的查询”过程代码的任意位置进入编辑状态,然后单击工具栏上的【运行子过程/用户窗体】按钮,或者按快捷键,即可运行该过程代码。682e3597f23194648902a2522714050f.png……上面咱们聊了运行宏的4种方式,但是有个姓慕容的姑娘说过,爱情不是你想来,想来它就来,宏也不是你想运行……它就一定能运行。有时候你打开一个工作簿,单击按钮,会弹出如下提示框。50fa2cb0f50e49430ea14cb90a184515.png出现该提示框的原因通常有两种,一种是该按钮没有指定宏(或者曾经指定过宏,但相关宏被删除/更名了),另一种是该工作簿所有的宏确实被禁用了——这就要聊到宏的安全性问题。设置宏的安全性咱们在前面什么是VBA里讲过,在很多人眼中宏是病毒的代名词,这是由于宏在给Office用户带来极大便利的同时,也带来了潜在的风险。它可以轻而易举的控制或运行电脑中的应用程序,生成计算机病毒或恶意功能,比如咱们曾经分享过的那篇小代码:
    如何制作自动自杀和杀死其它文件的Excel工作簿?
    有基没有情于此,Excel通常默认不允许运行工作簿中的宏,并提供了【宏安全性设置】功能。在【开发工具】选项卡下单击【宏安全性】按钮,可以打开【信任中心】对话框。在宏设置下,可以看到如下图所示的四个选项。b282e463f4c6b57cc6ea85f9cf5fe8d6.png一般来说,推荐使用【禁用所有宏,并发出通知】选项。启用该选项后,打开保存在非受信任位置的包含宏的工作簿时,在Excel功能区下方会显示【安全警告】消息栏,告知用户工作簿中的宏已经被禁用,是否【启用内容a46930b8334e77f391174d264e37ecd0.png当用户在消息栏中选择【启用内容】后,该文件会自动成为受信任的文档,再次打开该文件,系统不再显示【安全警告】消息栏。当用户没有选择【启用内容】,而是直接进行了其它Excel窗口的操作,【安全警告】的消息框会自动消失,并默认用户不选择启用宏。此时如果你又想启用宏了——不好意思,爱情不是你想来想来他就来,麻烦你关闭重启Excel工作簿再和【安全警告】的消息框打个招呼吧~……

    如何保存带宏的文件

    最后一个问题:我们编写了一段宏代码,运行测试成功后,就需要将文件保存——那么如何保存包含宏代码的Excel文件?这问题问的似乎有点儿傻气,但以我常年扎根底层的沧桑而忧郁的双眸来看,还是很有必要说一下地——熊迪,算一卦?加入我的Excel星球,只需要149元,即可畅通无阻学习Excel方方面面~Excel知识星球加入及使用指南……在Excel基础入门教程的篇章里咱们曾经讲过,Excel的文件格式类型有很多种,最常用的是xlsx,但这种格式的文件并不支持保存宏代码,它会自动抹除VBE或其它位置的宏。只有古老的03版Excel、二进制工作簿(xlsb)和以字母“m”结尾的文件格式(xlsm,xltm,xlam)才可以用于保存宏代码的文件,其中最常使用的是xlsm格式。——因此,敲黑板,在你学习VBA的过程中,请务必先将工作簿另存为xlsm格式。为什么这么说?我有个叫随风小妞的前女朋友,经常不记得将Excel文件另存为xlsm格式,而是直接使用xlsx格式编写代码。每当代码临近完成调试,却有不小机率不幸死机,于是代码全军覆没尸骨无存。你想想,你想想他当场哭的梨花带雨的模样,岂是一个惨字了得?希望你不要重蹈他的覆辙,更不要哭的梨花带雨我见不怜……致安,愿你不再因Excel而烦恼,我是星光,咱们下期再见。系统学习Excel
    推荐加入我的Excel社群
    d47244fce5c0df002ee851812d8c917e.png

    扩展阅读

    03bab8661b08624b8ffc9fbffd8e6421.pngd68533179bc755991f6cf5e58a0e81a4.pngfab388de0a54e5bb893add71066faa19.png
    展开全文
  • HI,大家好,我星光,今天咱们来继续学习VBA。...如何编写和运行VBA代码什么是VBA先来看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?”“VBA!”“VB...

    HI,大家好,我是星光,今天咱们来继续学习VBA。在上一章咱们讲了为什么要学习VBA~VBA还值不值得学~学了还有没有用~零基础学VBA编程01:VBA还能不能学?学了还有没有用?

    这一章咱们再来简单回答几个小问题:什么是VBA?如何编写和运行VBA代码?

    什么是VBA先来看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?”“VBA!”“VBA是什么呀?”“VBA就是……反正很厉害,它可以减少很多重复性的工作,可以很轻松就让Excel简易化自动化智能化,你听我说,它还可以做人机交互界面,完成Excel自身功能无法完成的高度复杂的任务,还能够一键生成Word和PPT,你说厉害不厉害?”
    “听不太懂哎——它和VAR是什么关系?没关系?那和BRA呢?也没关系?那V是什么?B是什么?A又是什么?”“……”你很茫然,于是想起了那个叫百度的混蛋,默默搜索了一番。
    什么是VBA?VBA是Visual Basic For Application的简称,是VB语言的一个分支,是一种建立在Office应用程序中的开发工具,是……——然而知道这概念也啥实际用处,因为你的异性朋友依然听不懂你在说什么。“还是听不太懂哎,对了,VBA是不是宏?”“宏?”“就是病毒!”“病毒?不不不,有的不是病毒,有的……”“那就是病毒咯!”你无语,只好继续百度。什么是宏?宏来源于英文单词“marco”,是一种批量处理的称谓,暗示着将小命令或动作转化为一系列指令,是软件提供的一种特殊功能,也就是说宏并非Office软件所独有,因此从广义上来说,VBA确实是一种宏,但宏却未必是VBA……宏是不是病毒?这就好比问人是不是好人?人当然有好人也有坏人,好人也可能做坏事,坏人也可能做好事,人是不是好人,得看在某个时间里TA做了什么事,这就不是薛定谔的猫……“VBA是一种非常简单实用的编程语言,它可以做坏事,也可以做好事……”你尝试着解释。“编程?那小胖你就是程序猿咯?”她看了看你的发际线,“嗯,看起来确实有一点儿像。”“不……不是……你误会了!程序猿是一个职业的称呼,并不是会一点编程就是程序猿,还需要穿格子衫,还……”“听不懂哎。”她看着你的发际线。“……”……且不管你的发际线到底怎么样,咱们还是大体了解了VBA是什么,那么——如何编写VBA呢?谈到编写VBA,就不得不说一下VBE……什么是VBE大部分编程语言都有自己的集成开发环境IDE(Integrated Development Environment),它为用户提供了代码编写功能、分析功能、调试功能等,比如语法高亮、语句自动补全、参考资料……VBA也不例外,VBA的代码编辑器依托于Office软件,又被称为VBE(Visual Basic Editor)窗口——换句话说,VBE窗口也就是咱们以后编写VBA程序的地方。长相有点儿寒酸,如下图所示。a0e564bf3d9c88c78191eb844340d6e9.png进入VBE窗口常用方式有以下几种。第1种方式是快捷键。第2种方式是右键单击任意工作表标签,在弹出的快捷菜单中选中【查看代码】命令。6b896c994a73fb103faae4a14d62269b.png第3种方式是在【开发工具】选项卡中进行操作。……我们知道Excel有功能区,功能区内有选项卡,每个选项卡对应不同的功能分类。比如【开始】选项卡集中了用户最常使用的功能;【插入】选项卡集中了透视表、图形和图表等功能;【页面布局】是打印;【公式】是函数公式……【开发工具】选项卡则属于VBA的地盘。5e0c6a65bbabc32790248ba593671015.png不过在默认状态下,Excel功能区并不显示【开发工具】选项卡。这是由于VBA属于Excel的高级功能,既然是高级功能自然要享受一番特殊的待遇——不要说什么人人平等这样骗人的鬼话,毕竟Excel它不是人——这待遇就是关起来不能主动见人。在【文件】选项卡中单击【选项】命令,打开【Excel选项】对话框。在该对话框中,单击【自定义功能区】选项卡,在右侧列表框中选中【开发工具】复选框,单击【确定】按钮关闭【Excel选项】对话框,即可在功能区中显示【开发工具】选项卡。98afc1848f52b1ab2d9caf613dfdb052.png在【开发工具】选项卡中单击【Visual Basic】或者【查看代码】按钮即可进入VBE。5f4ad1dbbf63154ee8004ad6e423f802.png……打个响指,一起来详细认识下VBE吧,毕竟以后咱们就靠它编写VBA代码了,无论如何总得混个面熟先。认识VBEVBE有菜单栏、工具栏和功能窗口三部分组成。
    菜单栏的选项卡比较多,现在说了你也记不住,就等用到时咱们再说。这里先重点说下功能窗口。
    功能窗口又分为【工程资源管理器窗口】、【属性窗口】、【代码窗口】、【立即窗口】、【本地窗口】等五大窗口。
    5d6826088b9d7ae5146b95e99c92774b.png不同的窗口功能和作用如下。1、工程资源管理器窗口工程资源管理器窗口,顾名思义,也就是管理工程资源的地方;这里的工程指的是工作簿中模块的集合。它呈现树形结构,包含4类对象:Excel对象(工作表和工作簿)、模块对象、窗体对象和类模块对象。
    一个新建工作簿的工程资源管理器窗口默认只有工作表对象和ThisWorkbook对象;但我们需要重点了解的是模块对象,绝大多数的VBA过程都是在模块对象中编辑和保存的。
    依次单击【菜单】→【插入】→【模块】,即可生成一个模块和模块对应的【代码窗口】。在【代码窗口】中我们可以新建或编辑VBA过程。b7d8580c3d4166669194730a53a6d60b.png2、属性窗口属性窗口用来查看和设置对象的属性,比如设置窗体颜色、大小、设置工作表对象的显示状态为深度隐藏等。115ca72ff866440cf2c01887b2340fc9.png3、代码窗口代码窗口用来显示和编辑VBA代码。【工程资源管理器】中每个对象都拥有自己的代码窗口,双击某个对象,即可在VBE中打开该对象的代码窗口。代码窗口分为上下两个部分,上部为对象列表框和过程/事件列表框,下部为代码编辑区。6ac96f5292bf3b891e2c05022d9d1d8b.png4、立即窗口立即窗口常用于代码调试,在该窗口输入代码,按回车键即可看到代码执行后的结果。除了在立即窗口中直接输入代码外,也可以在VBA代码中使用Debug.Print命令将指定内容输入到立即窗口中,这在代码调试过程中较为常用。65710b7e3bb30008df989d69de1c4b66.png不过需要注意的是,立即窗口和代码窗口不同。当Excel程序关闭后,系统会自动清除立即窗口中的内容。5、本地窗口本地窗口将自动显示出当前过程中所有的变量声明和变量值,而且会随着代码运行的过程自动更新显示,这是我们调试代码最主要的依据。9996151204b2b94469110da503f9f04a.png……小贴士:在Excel中,以上窗口并非全部默认显示。单击VBE菜单栏上的【视图】选项卡,会打开一个选项菜单,熊迪们可以根据需要选择显示相应的功能窗口,通常建议至少选择显示【工程资源管理器窗口】、【代码窗口】和【本地窗口】。4b73622dc13048f5de8fc3c6321bb503.png了解完了VBE代码编辑窗口,下一个问题是,如何编写VBA代码?如何编写VBA代码看我手——歪,图,思锐……编写VBA代码的方式常用的有三种。第一种方式:复制粘贴别笑,严肃点,俺是认真的。要知道搜罗优秀代码、复制粘贴化为己用是编写程序的基本能力,是程序员不可或缺的左膀右臂,不管你是新手还是高手,天下代码早晚都不过一个抄字——不过咱们得知道哪些能抄?哪些不能抄?哪些抄了之后必须要修改。第2种方式:自己写自己写的意思就是打开VBE,在模块等对象的代码窗口内自己编写VBA代码(这是一句废话)。复制粘贴固然属于天下无双的神技,但并不适合细节迥异的具体问题处理,所以至少你得知道代码的逻辑是否正确;结构是否合理;局部的代码应该如何修改——而有些时候,修改别人的代码,还不如自己重新编写来的爽快。第3种方式:录制宏录制宏的意思是让勤快又善良的Excel帮咱们自动写代码。对于VBA初学者来说,最烦恼的事情莫过于Excel的对象太多了,每个对象的属性和方法又太多了,层层叠叠,头大的让人记不住——其实完全没必要记住,想要知道某个对象的属性和方法?根据需求录制一段宏,查看下Excel自动生成的代码就一目了然了。比如说,你想要知道如何使用VBA代码设置单元格边框线以及标题行文字加粗并居中显示,可以使用以下操作。步骤1:在【开发工具】选项卡下单击【录制宏】命令,打开【录制宏】对话框。根据需要在【录制宏】对话框的【宏名】文本框中输入宏的名称,当然也可以保持默认值不变,然后单击【确定】按钮f6c03de9abd4dd13981311fb8cb073a0.png步骤2:设置A1:D10单元格区域的边框线为所有边框线,将A1:D1标题行的字体加粗并居中显示。最后在【开发工具】选项卡下单击【停止录制】命令,结束录制宏。步骤3:按快捷键打开VBE窗口,在模块中即可看到Excel自动生成的VBA代码。0a51eb695cf89f80ea79c8d13a404357.png以上代码看似繁杂混乱,但如果您已有一定的VBA编程基础,还是不难从中分辨出哪些代码是设置边框线,哪些代码是设置字体加粗和居中显示的;而我们只需要复制相关代码,稍加修改即可直接使用。当然,录制宏的作用不止如此。有一些朋友,出于各种原因无意深入学习VBA,却又希望借助VBA提升工作效率,甚至实现数据处理自动化——当然也是可以的,这就是民间流传的录制宏+函数公式的组合。借助录制宏,我们可以使函数公式自动输入,进而实现数据处理的自动化。我举一个简单的小栗子。如下图所示,有两张表,一张表是数据源,一张表是查询表。咱们需要制作一个数据查询的模版;在查询表的B列,计算A列人员对应的考试成绩——你会怎么处理呢?5642f6bd8368f3e1e39308f7dbf2697b.png步骤1:在【开发工具】选项卡下单击【录制宏】,打开【录制宏】对话框,在【宏名】文本框中输入内容:我的查询,并【确定】。32095f7a03523247e77f9cac7921f2e4.png步骤2:在B2单元格输入以下函数公式:
    =IFERROR(VLOOKUP(A2,成绩表!A:B,2,0),"")
    向下复制填充到B2:B5000单元格区域;然后复制B2:B5000单元格区域,使用选择性粘贴为数值的方式,将公式计算结果粘贴为数值,最后停止录制宏。
    如此一来,Excel就自个生成了一段代码,这段代码的作用是自动使用VLOOKUP函数查询A2:A5000单元格范围内的人名在成绩表中的考试成绩。f072e151a1691e888203194922980bb0.png于是新的问题来了——如何运行这段VBA代码?如何运行VBA代码以运行上述名为“我的查询”的录制宏为例,说下四种常见的优势各异的运行VBA代码的方式。第1种方式:快捷键在【开发工具】选项卡下,单击【宏】按钮,打开【宏】对话框。在该对话框中选中宏名“我的查询”。
    在右侧单击【选项】按钮,打开【宏选项】对话框;设置快捷键为Ctrl+q,最后单击【确定】按钮,依次关闭对话框。
    4deb1d905e19bb0327851b3d91d9e0c1.png设置完成后,只需按下快捷键,系统就会自动运行相应宏。想象一下吧小同志,你背靠皮椅,小眼微眯,手指轻动,一个函数都不漏痕迹,只是按下快捷键,Excel就会自动为你获取数据查询结果,是不是秀气满满抑或巴适气侧漏?不过需要注意的是,这里设置的宏快捷键会覆盖Excel默认的快捷键。比如将宏的快捷键设置为,也就不再执行原来的打开【查找与替换】对话框功能了。第2种方式:插入按钮快捷键的方式虽好,久而不用却难免会忘,此外它也不适合广泛用于制作通用模版。此时我们可以设置一个按钮,通过它来执行指定的宏。在【开发工具】选项卡下依次单击【插入】→【按钮(窗体控件)】按钮。在工作表中绘制一个大小随心的按钮,松开鼠标左键后,系统会自动弹出一个【指定宏】对话框,选中所需宏名,比如本例“我的查询”,单击【确定】按钮,即可将该按钮关联给宏“我的查询”。1087b575a19c059acaeb903ec82bc3e3.gif设置完成后,单击该按钮,即可执行相应的宏代码。小贴士<1>:右键单击按钮,在弹出的快捷菜单中单击【编辑文字】,可以修改按钮的名称,比如修改为“朕要工作了!”<2>:除了插入按钮外,也可以插入图形或图片等对象,实现类似关联运行宏代码的效果。第3种方式:功能区宏按钮如果一个工作簿的宏命令比较多,以至于你一时间找不到相关按钮的位置,就可以使用这种方式来运行宏了。在【开发工具】选项卡下单击【宏】按钮,在弹出的【宏】对话框中选择【我的查询】选项,单击【执行】按钮即可运行该宏。5b9406ea5dfea12f6cfb43767198d3df.png第4种方式:在VBE中运行宏在代码开发过程中,经常需要多次运行和调式VBA代码,此时就需要在VBE中直接运行宏。单击“我的查询”过程代码的任意位置进入编辑状态,然后单击工具栏上的【运行子过程/用户窗体】按钮,或者按快捷键,即可运行该过程代码。e633537ac881b0291dfe8929dcc180c2.png……上面咱们聊了运行宏的4种方式,但是有个姓慕容的姑娘说过,爱情不是你想来,想来它就来,宏也不是你想运行……它就一定能运行。有时候你打开一个工作簿,单击按钮,会弹出如下提示框。486e498ef7e210d6c3db771861480440.png出现该提示框的原因通常有两种,一种是该按钮没有指定宏(或者曾经指定过宏,但相关宏被删除/更名了),另一种是该工作簿所有的宏确实被禁用了——这就要聊到宏的安全性问题。设置宏的安全性咱们在前面什么是VBA里讲过,在很多人眼中宏是病毒的代名词,这是由于宏在给Office用户带来极大便利的同时,也带来了潜在的风险。它可以轻而易举的控制或运行电脑中的应用程序,生成计算机病毒或恶意功能。Excel通常默认不允许运行工作簿中的宏,并提供了【宏安全性设置】功能。在【开发工具】选项卡下单击【宏安全性】按钮,可以打开【信任中心】对话框。在宏设置下,可以看到如下图所示的四个选项。44c1bdaf8b566299da21ecdfc0319861.png一般来说,推荐使用【禁用所有宏,并发出通知】选项。启用该选项后,打开保存在非受信任位置的包含宏的工作簿时,在Excel功能区下方会显示【安全警告】消息栏,告知用户工作簿中的宏已经被禁用,是否【启用内容】。ef704bccb4b4aa252571b458d131634a.png当用户在消息栏中选择【启用内容】后,该文件会自动成为受信任的文档,再次打开该文件,系统不再显示【安全警告】消息栏。当用户没有选择【启用内容】,而是直接进行了其它Excel窗口的操作,【安全警告】的消息框会自动消失,并默认用户不选择启用宏。此时如果你又想启用宏了——不好意思,爱情不是你想来想来他就来,麻烦你关闭重启Excel工作簿再和【安全警告】的消息框打个招呼吧~如何保存带宏的文件最后一个问题:当我们编写了一段宏代码,运行测试成功后,就需要将文件保存——那么如何保存包含宏代码的Excel文件?这问题问的似乎有点儿傻气,但以我常年扎根底层的沧桑而忧郁的双眸来看,还是很有必要说一下地——……在Excel基础入门教程的篇章里咱们曾经讲过,Excel的文件格式类型有很多种,最常用的是xlsx,但这种格式的文件并不支持保存宏代码,它会自动抹除VBE或其它位置的宏。只有古老的03版Excel、二进制工作簿(xlsb)和以字母“m”结尾的文件格式(xlsm,xltm,xlam)才可以用于保存宏代码的文件,其中最常使用的是xlsm格式。——因此,敲黑板,在你学习VBA的过程中,请务必先将工作簿另存为xlsm格式。为什么这么说?我有个叫随风小妞的前女朋友,经常不记得将Excel文件另存为xlsm格式,而是直接使用xlsx格式编写代码。每当代码临近完成调试,却有不小机率不幸死机,于是代码全军覆没尸骨无存。你想想,你想想他当场哭的梨花带雨的模样,岂是一个惨字了得?希望你不要重蹈他的覆辙,更不要哭的梨花带雨我见不怜……致安,愿你不再因Excel而烦恼,我是星光,咱们下期再见。图文制作:看见星光原载公众号:Excel星球

    8fc6783db96fbc2faee9a6a1e5eb0052.png

    专业的职场技能充电站

    展开全文
  • ”“VBA是什么呀?”“VBA就是……反正很厉害,它可以减少很多重复性的工作,可以很轻松就让Excel简易化自动化智能化,你听我说,它还可以做人机交互界面,完成Excel自身功能无法完成的高度复杂的任务,还能够一键...
    看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?”“VBA!”“VBA是什么呀?”“VBA就是……反正很厉害,它可以减少很多重复性的工作,可以很轻松就让Excel简易化自动化智能化,你听我说,它还可以做人机交互界面,完成Excel自身功能无法完成的高度复杂的任务,还能够一键生成Word和PPT,你说厉害不厉害?”
    “听不太懂哎——它和VAR是什么关系?没关系?那和BRA呢?也没关系?那V是什么?B是什么?A又是什么?”“……”你很茫然,于是想起了那个叫百度的混蛋,默默搜索了一番。
    什么是VBA?VBA是Visual Basic For Application的简称,是VB语言的一个分支,是一种建立在Office应用程序中的开发工具,是……——然而知道这概念也啥实际用处,因为你的异性朋友依然听不懂你在说什么。“还是听不太懂哎,对了,VBA是不是宏?”“宏?”“就是病毒!”“病毒?不不不,有的不是病毒,有的……”“那就是病毒咯!”你无语,只好继续百度。什么是宏?宏来源于英文单词“marco”,是一种批量处理的称谓,暗示着将小命令或动作转化为一系列指令,是软件提供的一种特殊功能,也就是说宏并非Office软件所独有,因此从广义上来说,VBA确实是一种宏,但宏却未必是VBA……宏是不是病毒?这就好比问人是不是好人?人当然有好人也有坏人,好人也可能做坏事,坏人也可能做好事,人是不是好人,得看在某个时间里TA做了什么事,这就不是薛定谔的猫……“VBA是一种非常简单实用的编程语言,它可以做坏事,也可以做好事……”你尝试着解释。“编程?那小胖你就是程序猿咯?”她看了看你的发际线,“嗯,看起来确实有一点儿像。”“不……不是……你误会了!程序猿是一个职业的称呼,并不是会一点编程就是程序猿,还需要穿格子衫,还……”“听不懂哎。”她看着你的发际线。“……”……且不管你的发际线到底怎么样,咱们还是大体了解了VBA是什么,那么——如何编写VBA呢?谈到编写VBA,就不得不说一下VBE……什么是VBE大部分编程语言都有自己的集成开发环境IDE(Integrated Development Environment),它为用户提供了代码编写功能、分析功能、调试功能等,比如语法高亮、语句自动补全、参考资料……VBA也不例外,VBA的代码编辑器依托于Office软件,又被称为VBE(Visual Basic Editor)窗口——换句话说,VBE窗口也就是咱们以后编写VBA程序的地方。长相有点儿寒酸,如下图所示。38e76b07820ec1c6e99fe5206f925402.png进入VBE窗口常用方式有以下几种。第1种方式是快捷键。第2种方式是右键单击任意工作表标签,在弹出的快捷菜单中选中【查看代码】命令。b93855a68791cf7ebb1cf7eaff6c4afc.png第3种方式是在【开发工具】选项卡中进行操作。……我们知道Excel有功能区,功能区内有选项卡,每个选项卡对应不同的功能分类。比如【开始】选项卡集中了用户最常使用的功能;【插入】选项卡集中了透视表、图形和图表等功能;【页面布局】是打印;【公式】是函数公式……【开发工具】选项卡则属于VBA的地盘。100c54ad6a6559f4f66734a265773108.png不过在默认状态下,Excel功能区并不显示【开发工具】选项卡。这是由于VBA属于Excel的高级功能,既然是高级功能自然要享受一番特殊的待遇——不要说什么人人平等这样骗人的鬼话,毕竟Excel它不是人——这待遇就是关起来不能主动见人。在【文件】选项卡中单击【选项】命令,打开【Excel选项】对话框。在该对话框中,单击【自定义功能区】选项卡,在右侧列表框中选中【开发工具】复选框,单击【确定】按钮关闭【Excel选项】对话框,即可在功能区中显示【开发工具】选项卡。fd9393e466985599fec96d5a01e38e94.png在【开发工具】选项卡中单击【Visual Basic】或者【查看代码】按钮即可进入VBE。ac1f587be31652a91fea49002be7dbb5.png……打个响指,一起来详细认识下VBE吧,毕竟以后咱们就靠它编写VBA代码了,无论如何总得混个面熟先。认识VBEVBE有菜单栏、工具栏和功能窗口三部分组成。
    菜单栏的选项卡比较多,现在说了你也记不住,就等用到时咱们再说。这里先重点说下功能窗口。
    功能窗口又分为【工程资源管理器窗口】、【属性窗口】、【代码窗口】、【立即窗口】、【本地窗口】等五大窗口。
    f40e39f8fa80029c2ab272d6f49ab961.png不同的窗口功能和作用如下。1、工程资源管理器窗口工程资源管理器窗口,顾名思义,也就是管理工程资源的地方;这里的工程指的是工作簿中模块的集合。它呈现树形结构,包含4类对象:Excel对象(工作表和工作簿)、模块对象、窗体对象和类模块对象。
    一个新建工作簿的工程资源管理器窗口默认只有工作表对象和ThisWorkbook对象;但我们需要重点了解的是模块对象,绝大多数的VBA过程都是在模块对象中编辑和保存的。
    依次单击【菜单】→【插入】→【模块】,即可生成一个模块和模块对应的【代码窗口】。在【代码窗口】中我们可以新建或编辑VBA过程。
    bd731ec4af5c1adf407a31a2f75c4946.png2、属性窗口属性窗口用来查看和设置对象的属性,比如设置窗体颜色、大小、设置工作表对象的显示状态为深度隐藏等。7c47e742f5bec25f8cfe67a9621f48b5.png3、代码窗口代码窗口用来显示和编辑VBA代码。【工程资源管理器】中每个对象都拥有自己的代码窗口,双击某个对象,即可在VBE中打开该对象的代码窗口。代码窗口分为上下两个部分,上部为对象列表框和过程/事件列表框,下部为代码编辑区。8a8a0a0ae61182b1a21d3ca935c6ec43.png4、立即窗口立即窗口常用于代码调试,在该窗口输入代码,按回车键即可看到代码执行后的结果。除了在立即窗口中直接输入代码外,也可以在VBA代码中使用Debug.Print命令将指定内容输入到立即窗口中,这在代码调试过程中较为常用。56c37f32665c1aa264e9659ad693cdd3.png不过需要注意的是,立即窗口和代码窗口不同。当Excel程序关闭后,系统会自动清除立即窗口中的内容。5、本地窗口本地窗口将自动显示出当前过程中所有的变量声明和变量值,而且会随着代码运行的过程自动更新显示,这是我们调试代码最主要的依据。d6a098990f517be4677d44bd5eeb27f0.png……小贴士:在Excel中,以上窗口并非全部默认显示。单击VBE菜单栏上的【视图】选项卡,会打开一个选项菜单,熊迪们可以根据需要选择显示相应的功能窗口,通常建议至少选择显示【工程资源管理器窗口】、【代码窗口】和【本地窗口】。b2e589d45417f63974b21a02dbf61f8c.png了解完了VBE代码编辑窗口,下一个问题是,如何编写VBA代码?如何编写VBA代码看我手——歪,图,思锐……编写VBA代码的方式常用的有三种。第一种方式:复制粘贴别笑,严肃点,俺是认真的。要知道搜罗优秀代码、复制粘贴化为己用是编写程序的基本能力,是程序员不可或缺的左膀右臂,不管你是新手还是高手,天下代码早晚都不过一个抄字——不过咱们得知道哪些能抄?哪些不能抄?哪些抄了之后必须要修改。第2种方式:自己写自己写的意思就是打开VBE,在模块等对象的代码窗口内自己编写VBA代码(这是一句废话)。复制粘贴固然属于天下无双的神技,但并不适合细节迥异的具体问题处理,所以至少你得知道代码的逻辑是否正确;结构是否合理;局部的代码应该如何修改——而有些时候,修改别人的代码,还不如自己重新编写来的爽快。第3种方式:录制宏录制宏的意思是让勤快又善良的Excel帮咱们自动写代码。对于VBA初学者来说,最烦恼的事情莫过于Excel的对象太多了,每个对象的属性和方法又太多了,层层叠叠,头大的让人记不住——其实完全没必要记住,想要知道某个对象的属性和方法?根据需求录制一段宏,查看下Excel自动生成的代码就一目了然了。比如说,你想要知道如何使用VBA代码设置单元格边框线以及标题行文字加粗并居中显示,可以使用以下操作。步骤1:在【开发工具】选项卡下单击【录制宏】命令,打开【录制宏】对话框。根据需要在【录制宏】对话框的【宏名】文本框中输入宏的名称,当然也可以保持默认值不变,然后单击【确定】按钮dd3132e6604e5fff8d4c478f95208d70.png步骤2:设置A1:D10单元格区域的边框线为所有边框线,将A1:D1标题行的字体加粗并居中显示。最后在【开发工具】选项卡下单击【停止录制】命令,结束录制宏。步骤3:按快捷键打开VBE窗口,在模块中即可看到Excel自动生成的VBA代码。896e7c9b576ab041dd18fdfc897efe0d.png以上代码看似繁杂混乱,但如果您已有一定的VBA编程基础,还是不难从中分辨出哪些代码是设置边框线,哪些代码是设置字体加粗和居中显示的;而我们只需要复制相关代码,稍加修改即可直接使用。当然,录制宏的作用不止如此。有一些朋友,出于各种原因无意深入学习VBA,却又希望借助VBA提升工作效率,甚至实现数据处理自动化——当然也是可以的,这就是民间流传的录制宏+函数公式的组合。借助录制宏,我们可以使函数公式自动输入,进而实现数据处理的自动化。我举一个简单的小栗子。如下图所示,有两张表,一张表是数据源,一张表是查询表。咱们需要制作一个数据查询的模版;在查询表的B列,计算A列人员对应的考试成绩——你会怎么处理呢?1e36b33aa6215ee046c106e2651455a5.png步骤1:在【开发工具】选项卡下单击【录制宏】,打开【录制宏】对话框,在【宏名】文本框中输入内容:我的查询,并【确定】。c1188356f367389249b1fe9ac707bc0b.png步骤2:在B2单元格输入以下函数公式:
    =IFERROR(VLOOKUP(A2,成绩表!A:B,2,0),"")
    向下复制填充到B2:B5000单元格区域;然后复制B2:B5000单元格区域,使用选择性粘贴为数值的方式,将公式计算结果粘贴为数值,最后停止录制宏。
    如此一来,Excel就自个生成了一段代码,这段代码的作用是自动使用VLOOKUP函数查询A2:A5000单元格范围内的人名在成绩表中的考试成绩。
    73beb4f78c5962558bae80b237e63ea6.png于是新的问题来了——如何运行这段VBA代码?如何运行VBA代码以运行上述名为“我的查询”的录制宏为例,说下四种常见的优势各异的运行VBA代码的方式。第1种方式:快捷键在【开发工具】选项卡下,单击【宏】按钮,打开【宏】对话框。在该对话框中选中宏名“我的查询”。
    在右侧单击【选项】按钮,打开【宏选项】对话框;设置快捷键为Ctrl+q,最后单击【确定】按钮,依次关闭对话框。
    394d7fba9fd28d14fe781bc3f0b5d535.png设置完成后,只需按下快捷键,系统就会自动运行相应宏。想象一下吧小同志,你背靠皮椅,小眼微眯,手指轻动,一个函数都不漏痕迹,只是按下快捷键,Excel就会自动为你获取数据查询结果,是不是秀气满满抑或巴适气侧漏?不过需要注意的是,这里设置的宏快捷键会覆盖Excel默认的快捷键。比如将宏的快捷键设置为,也就不再执行原来的打开【查找与替换】对话框功能了。第2种方式:插入按钮快捷键的方式虽好,久而不用却难免会忘,此外它也不适合广泛用于制作通用模版。此时我们可以设置一个按钮,通过它来执行指定的宏。在【开发工具】选项卡下依次单击【插入】→【按钮(窗体控件)】按钮。在工作表中绘制一个大小随心的按钮,松开鼠标左键后,系统会自动弹出一个【指定宏】对话框,选中所需宏名,比如本例“我的查询”,单击【确定】按钮,即可将该按钮关联给宏“我的查询”。87e3adadb0c88e933d6716e5609abaa2.gif设置完成后,单击该按钮,即可执行相应的宏代码。小贴士<1>:右键单击按钮,在弹出的快捷菜单中单击【编辑文字】,可以修改按钮的名称,比如修改为“朕要工作了!”<2>:除了插入按钮外,也可以插入图形或图片等对象,实现类似关联运行宏代码的效果。第3种方式:功能区宏按钮如果一个工作簿的宏命令比较多,以至于你一时间找不到相关按钮的位置,就可以使用这种方式来运行宏了。在【开发工具】选项卡下单击【宏】按钮,在弹出的【宏】对话框中选择【我的查询】选项,单击【执行】按钮即可运行该宏。4f6894cccc405d3a9f8800122d4cfa1b.png第4种方式:在VBE中运行宏在代码开发过程中,经常需要多次运行和调式VBA代码,此时就需要在VBE中直接运行宏。单击“我的查询”过程代码的任意位置进入编辑状态,然后单击工具栏上的【运行子过程/用户窗体】按钮,或者按快捷键,即可运行该过程代码。25750a11629e995aa2918632d041358c.png……上面咱们聊了运行宏的4种方式,但是有个姓慕容的姑娘说过,爱情不是你想来,想来它就来,宏也不是你想运行……它就一定能运行。有时候你打开一个工作簿,单击按钮,会弹出如下提示框。3be7281799f7deb436469b3a784db0d1.png出现该提示框的原因通常有两种,一种是该按钮没有指定宏(或者曾经指定过宏,但相关宏被删除/更名了),另一种是该工作簿所有的宏确实被禁用了——这就要聊到宏的安全性问题。设置宏的安全性咱们在前面什么是VBA里讲过,在很多人眼中宏是病毒的代名词,这是由于宏在给Office用户带来极大便利的同时,也带来了潜在的风险。它可以轻而易举的控制或运行电脑中的应用程序,生成计算机病毒或恶意功能。Excel通常默认不允许运行工作簿中的宏,并提供了【宏安全性设置】功能。在【开发工具】选项卡下单击【宏安全性】按钮,可以打开【信任中心】对话框。在宏设置下,可以看到如下图所示的四个选项。f0197cee705a7145ae8b3cef4afa5ac0.png一般来说,推荐使用【禁用所有宏,并发出通知】选项。启用该选项后,打开保存在非受信任位置的包含宏的工作簿时,在Excel功能区下方会显示【安全警告】消息栏,告知用户工作簿中的宏已经被禁用,是否【启用内容】。a1460a82c875266d49422e94eb3cd154.png当用户在消息栏中选择【启用内容】后,该文件会自动成为受信任的文档,再次打开该文件,系统不再显示【安全警告】消息栏。当用户没有选择【启用内容】,而是直接进行了其它Excel窗口的操作,【安全警告】的消息框会自动消失,并默认用户不选择启用宏。此时如果你又想启用宏了——不好意思,爱情不是你想来想来他就来,麻烦你关闭重启Excel工作簿再和【安全警告】的消息框打个招呼吧~如何保存带宏的文件最后一个问题:当我们编写了一段宏代码,运行测试成功后,就需要将文件保存——那么如何保存包含宏代码的Excel文件?这问题问的似乎有点儿傻气,但以我常年扎根底层的沧桑而忧郁的双眸来看,还是很有必要说一下地——……在Excel基础入门教程的篇章里咱们曾经讲过,Excel的文件格式类型有很多种,最常用的是xlsx,但这种格式的文件并不支持保存宏代码,它会自动抹除VBE或其它位置的宏。只有古老的03版Excel、二进制工作簿(xlsb)和以字母“m”结尾的文件格式(xlsm,xltm,xlam)才可以用于保存宏代码的文件,其中最常使用的是xlsm格式。——因此,敲黑板,在你学习VBA的过程中,请务必先将工作簿另存为xlsm格式。为什么这么说?我有个叫随风小妞的前女朋友,经常不记得将Excel文件另存为xlsm格式,而是直接使用xlsx格式编写代码。每当代码临近完成调试,却有不小机率不幸死机,于是代码全军覆没尸骨无存。你想想,你想想他当场哭的梨花带雨的模样,岂是一个惨字了得?希望你不要重蹈他的覆辙,更不要哭的梨花带雨我见不怜……致安,愿你不再因Excel而烦恼,我是星光,咱们下期再见。图文制作:看见星光原载公众号:Excel星球
    展开全文
  • 大家好,我们今日继续讲解VBA代码解决方案的第108讲内容:VBA中什么是方法,什么是事件,在上一讲中我们讲了对象的属性,相信大家一定对上面的概念有了清楚的认识,今日我们继续讲解两个十分重要的概念:方法和事件...
  • HI,大家好,我星光,今天咱们来继续学习VBA。...如何编写和运行VBA代码什么是VBA先来看第一个问题,什么是VBA?你学了一段时间VBA,有一天有个异性朋友问……“小胖,你最近在学什么呀?”“VBA!”“VB...
  • 大家好,我们今日继续讲解VBA代码解决方案的第109讲内容:VBA中什么是过程。我的理解,过程就是执行某些动作的代码组合,这些组合以完成某项任务为目的。VBA过程分Sub过程和Function过程。前者通常意义上的过程...
  • 常用“积木”过程案例分享第302期,今日内容动态数组及排重。提供给大家的这些内容我多年经验的记录,来源于我多年的实践。...最近代码出自第三套教程”VBA数组与字典解决方案”。 Sub mynzsz_68()Dim myar...
  • 大家好今天继续和大家分享VBA编程中常用的过程代码,有兴趣的朋友可以反馈交流一下:VBA中,什么是过程呢?VBA过程代码21:选定单元格字体为粗体Sub MyNZ()Selection.Font.Bold = TrueEND SUB代码的解析说明:上述...
  • 大家好,我们今日继续讲解VBA代码解决方案的第109讲内容:VBA中什么是过程。我的理解,过程就是执行某些动作的代码组合,这些组合以完成某项任务为目的。VBA过程分Sub过程和Function过程。前者通常意义上的过程...
  • 手头有个程序,数据库access,界面access,涉及到用vb还是vba的,进行编程。我很恼火一件事,就是微软,为什么提供了一种让开发者迷茫的API查询方式?比如,我想查看一下ADODB.Recordset 对象的Open方法,实现什么...
  • 前面两期分别给大家聊了什么是VBA、什么是VBE,今天再给大家聊一下如何编写VBA代码——看我小眼神……这事说起来可有意思了。编写VBA代码常用的方式有三种。第一种方式:复制粘贴耸肩摊手,说这话俺认真的。要知道...
  • 大家好,我们今日继续讲解VBA代码解决方案的第137讲内容:VBA代开任意程序的方法。 我们在写代码的时候,有...Shell函数是什么呢?它既不是工作表函数,也不是api函数,它是vba自带的函数。但是它却神通广大,能...
  • 大家好,我们今日继续讲解VBA代码解决方案的第107讲内容:对象的属性是什么?如何设置对象的属性。这讲是继续上节的内容对象之后的,这些概念是非常重要的概念,要认真的理解,确实的理解。这对于我们在写代码过程中...
  • 大家好,在我之前的教程中分别讲了"VBA代码解决方案""VBA数据库方案""VBA字典和数组方案",通过对这三套教程的学习,我们对VBA的基本知识和基本的操作能有了一定的了解。这套教材在前面教材基础上的讲解,希望大家...
  • VBA是Visual Basic for Application的简写,一种由...VBA与VB的代码编写时类似的 其不同之处在于 一、VB一门编程语言,可以独立运行在任意安装有操作系统的计算机上 VBA则必须“寄生”于它所控制的应用程序...
  • 他山之石——VBA代码封装

    千次阅读 2018-07-17 22:22:08
    '1 什么是DLL文件 'DLLDynamic Link Library 的缩写形式,DLL一个包含可由多个程序同时使用的代码和数据的库,' 'DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数...
  • 大家好,我们今日继续讲解VBA代码解决方案的第127讲内容:VBA如何打开和读取顺序文件。VBA在控制文件的时候,打开和读取最基本的操作,今天开始及以后的几讲会讲解这方面相关的内容,今日讲解的VBA如何打开和...
  • 疫情过后会是什么?对于后疫情时代大家很难预测,或许是供应链的断裂,经济下行的压力加大,但可以肯定的是会催生新的经济增长点。在今后更加严峻的存量残杀世界中,对于我们每个人,要尽可能多学习有用的知识,为...
  • 大家好,我们今日继续讲解VBA代码解决方案的第134讲内容:随机文件的特点及如何在访问随机文件时建立自定义数据类型。当某文件包含结构数据时,就以随机模式打开它。以随机模式打开文件你可以做到:同时读写、快速...
  • 大家好,我们今日继续讲解VBA代码解决方案的第107讲内容:对象的属性是什么?如何设置对象的属性。这讲是继续上节的内容对象之后的,这些概念是非常重要的概念,要认真的理解,确实的理解。这对于我们在写代码过程中...
  • 大家好,我们今日继续讲解VBA代码解决方案的第129讲内容:什么是顺序文件?什么是随机文件?什么是二进制文件?在第127和128讲中我讲了VBA在处理顺序文件时的一些方法,包括打开文件和读取文件。在写到这里的时候,...
  • 疫情过后会是什么?对于后疫情时代大家很难预测,或许是供应链的断裂,经济下行的压力加大,但可以肯定的是会催生新的经济增长点。在今后更加严峻的存量残杀世界中,对于我们每个人,要尽可能多学习有用的知识,为...
  • VBA的功能实在太强大,可初学的我们,面对那一串串尤如外星文的代码,你是不是看得头昏脑胀?想学,是不是却茫然得找不到入口?在这里,我把我自己的学习心得和笔记放出来,和大家一起分享交流,一起学习,共同进步...
  • VBA代码对众多小白来说,不可亲近的洪水猛兽,让人望而却步。今天我就教大家三句小白都能学会的VBA,让你自动生成工作表目录。无错,就是三句代码。而且不用自己写,让Excel帮你写就可以了。1.录制宏在开发工具...
  • 大家好,我们今日继续讲解VBA代码解决方案的第132讲内容:使用 Write #语句把数据写入打开顺序文件中。在上一讲的内容中我们讲了打开一文本文件来写入数据的两种方法有:Append或Output,那么问题来了,如何往打开的...
  • 大家好,我们今日继续讲解VBA代码解决方案的第52讲内容,这讲的内容利用VBA代码,如何获得当月的最后一天日期.在实际工作中经常需要根据给定的日期计算其所属月份的最后一天,此时怎么计算呢?我们首先要讲解一下...
  • 大家好,我们今日继续讲解VBA代码解决方案的第52讲内容,这讲的内容利用VBA代码,如何获得当月的最后一天日期.在实际工作中经常需要根据给定的日期计算其所属月份的最后一天,此时怎么计算呢?我们首先要讲解一下...
  • VBA工程包括下列组成:1、工作表2、图表3、当前工作簿——工程储存的工作簿4、模块5、类模块——特殊的模块让你可以创建自己的对象6、窗体7、引用到其它工程通过工程浏览器,你可以管理你的工程,容易地在当前打开的...
  • 大家好,今天继续讲解VBA数据库解决方案的第14...因为我们在做程序时经常会用到写数据库时要建立数据表,而手工建立确实很麻烦,我们考虑要用VBA代码去建立,其实,用代码去建立完全可以的,也非常的简单。实例的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 411
精华内容 164
关键字:

vba代码是什么