百倍年薪!从零开始学VBA

小编注:想获得更多专属福利吗?金币加成、尊享众测、专属勋章、达人福利任务你想要吗?如果想要,赶紧来申请认证站内生活家!猛击此链接

张大妈是一个很好的平台,从各路大佬分享的经验里面,我们可以汲取到非常多的营养,让自己少走弯路,比如学会了用CTRL+C代替右键、复制之后,提高了工作效率,我们就可以当上总裁,年薪百万。
确实,无论什么工作,想要更上一层楼,保证质量的前提下提高工作效率是基础。对于部分工种来说,使用简单的代码去处理一些繁杂却又不得不做的事情,可以节省出大量的时间。
有的朋友可能听到写代码就会望而却步,实际上VBA的语法算是比较友好的,用的时候结合现有资料已经足够。并且,任何语言实际运用的时候,更重要的是使用环境而非语法本身。
从零开始学VBA?人人都行。

一、VBA的特性

VBA的语法与VB6最接近,虽然后面还有VB.net等后继,但是参考性还是VB6大些。

VB6并不是面向对象的语言,但是这个毫无关系。很多人觉得面向对象是流行,不是就落后了,其实这只是一个误区。
不同语言适用的场景不同,VB6本来就是为了快速开发而诞生,VBA则是更加便捷的脚本语言,没有任何面向对象的意义。

别老想着面向对象,乖乖搬砖去别老想着面向对象,乖乖搬砖去

VB也好,LUA也好,有人捣鼓出类似于面向对象语言的使用方法,但那只是在声明和写法上,做到类似面向对象的语法而已,并不能改变本质,也没有实际意义。
以前在CSDN讨论过VB的面向对象写法,也在网游公司做过几年的LUA脚本监制,当时组内也盛行过LUA的“面向对象”写法。
后来我自己总结了一下,不管哪种脚本的所谓“面向对象”的写法,不能提高代码的可读性、维护性,不能提高代码的执行效率,不能减少代码量,也不能改变语言和代码的本质,说白了属于茴香的四种写法,自己用着顺手就行,别跟着网上某些人钻牛角尖,搞得不这么写就落后还去四处胡乱鄙视。

二、VBA的基础语法

VBA的声明
dim i as integer
把i声明成一个数值
dim s as string
把s声明成一个字符串
虽然也支持dim a这样不声明类型的写法,但个人并不推荐。这样的写法,变量a将为不确定类型,首次对其赋值的时候,系统才会根据赋值的类型进行初始化,可靠性极差。

连接字符串
s1 = s2 & s3
推荐使用shift + 7打出来的这个符号。
在VB里,加号也可以连接字符串,如果两个变量都是字符串,则进行拼接操作。但是这样会导致代码的可读性下降,不推荐。
&符号的另一个好处是,如果有一个变量为数值,则会强制转换成字符串再拼接,而加号不行。

百倍年薪!从零开始学VBA

无赖语法
on error resume next
正常的使用方法是on error goto,也即类似于C语言的try catch,用于出现错误时,捕获、跳转,以便处理。
而VB的这个resume next的写法,会忽略所有错误(除非严重到程序崩溃),继续往下执行。一般来说,只适用于无关紧要的、编写者已知并能掌控的小错误,否则当程序得不到正确结果的时候,你会发现无从调试。
写程序难免要查东西,或者看别人的代码。如果你看到有人用这个语句,建议先不要学,否则既无法得到正确的结果,也无法通过任何错误提示进行调试。

给大家讲个真实的笑话
我第一份工作,那时还是实习。
公司里有一个“前辈”,是比我早进去的所谓“程序员”。
有一天,他代码不会调来问我,我一看他代码,不用循环的,而是复制几百遍……
当时有点惊,而他的回答是,给了我一个白眼,说:你不懂!Treeview这个控件,不能用循环的!
我当时一瞬间还真被他唬住了。一看他弃用的代码,瞬间石化:
on error resume next
dim i as string
i = i + 1
给没有基础的朋友解释一下:他定义了一个字符串,拿去当成数值运算,然后屏蔽了所有错误信息,无从下手,就认为“Treeview这个控件不能用循环”了。
经历了这件事后,我信心大增,走上了程序员的不归路……百倍年薪!从零开始学VBA 

三、在Office里启用VBA

百倍年薪!从零开始学VBA

出于安全考虑,在Office里VBA默认是不启用的。

我们需要在设置,信任中心里,把文件所在位置添加进信任位置。

百倍年薪!从零开始学VBA

或者干脆一劳永逸,直接启用所有宏。

另外,文件必须另存为xlsm格式。

四、浏览官方参考文档

理论上,我们可以安装MSDN进行本地查询。
但是这玩艺儿,动辄好几G大小,安装也很麻烦。

百倍年薪!从零开始学VBA

微软提供了完整的在线文档,可以访问以下链接:
 

Office VBA Reference | Microsoft Docsdocs.microsoft.com去看看

 

虽然也曾有过带中文的旧版,不过版本较旧而且中文也不完整,建议直接在线看比较方便。

如果被英文文档吓到了,不要紧,因为大部分时候,我们需要哪个功能,才会去搜索该功能的实现方法,所以实际运用的时候,善用在线搜索,会比部署完整的文档更为有效。

或者,你也可以搜索“office编程手册”这个关键字,可以搜到2003版的官方手册,虽然旧了点,大部分内容是通用的。出于各种原因,这里不方便放链接,反正满地都是了。

百倍年薪!从零开始学VBA

不愧是微软官方的文档,不仅详细,而且归类都非常的整理和统一。

五、善用搜索解决问题

写代码的时候,无论再大的功能,都是由一个个小功能组成的。所以我们不需要把所有对象、函数、方法等都背得滚瓜烂熟,要用到什么,就去找什么。

比如我现在要用代码切换工作表,如果你稍微有点基础,知道工作表的英文是Sheet,那么直接打开官方的参考文档,找到对象,S开头:

百倍年薪!从零开始学VBA

我们可以看到:
Sheets("sheet1").Activate
示例代码里就已经有我们要的答案了。

那,如果我们连最基础的英文对象名都不知道呢?
VBA这么多年,网上也已经有很多的积累和沉淀了,其实稍微一搜索就有。

比如,我们想要用代码选中某些单元格,那么,以“vba 选中 单元格”为关键字搜索的话,就会出来很多答案:

百倍年薪!从零开始学VBA

当然,网上的代码不一定完全是对的,也不一定完全符合需求,我们可以把它实际运行一下试试看。

百倍年薪!从零开始学VBA

我们把代码丢进去,执行一下,果然代码执行过后,D5单元格就被选中了。
搞定!

再比如,咱连VB的for循环语句都不会写,怎么办?
以“VB for 语法”为关键词:

百倍年薪!从零开始学VBA

可以找到太多太多的资料了。
不怕不知道,只怕不会找。

六、研究别人的代码

对于新手来说,别人已经编写、调试成熟的代码具有比较高的参考价值,可以下载别人的小程序来参考。
VBA甚至能读写文件、连接数据库进行操作,但是比较复杂,这里不做陈述。

百倍年薪!从零开始学VBA

网上随便以“VBA”“范例”“代码”等关键字搜索,可以搜到非常多的资料,由于这里不方便放链接,大家可以自行搜索。

如上图,是高手做的小学数学练习程序,界面整齐,代码完整,直接可用。

百倍年薪!从零开始学VBA

脚本语言如果不特意去加密的话,所有代码都是明文可见可复制,即改即生效的。
这种环境对于初学来说已经是友好得不能再友好了,写不写得出来看造化了。

七、结语 

要想提升Excel办公效率质的飞跃,你不可不学VBA!零基础学习VBA看过来小编注:想获得更多专属福利吗?金币加成、尊享众测、专属勋章、达人福利任务你想要吗?如果想要,赶紧来申请认证站内生活家!猛击此链接之前群里讨论过,为什么基础Excel函数教程之类的会成为月经首页热门,得到的结论是:基础用户比较多,看到了就想着说,以后说不定有用吧,点了收藏。所以更高阶一点的东西,比如V波导终结者| 753 评论234 收藏8k查看详情

先声明一下,上一篇这个标题并不是我起的。 其实之前写的是针对有一定基础,但是却不知道具体如何去提高效率的朋友。至于标题为什么会变……还是别问了。

VBA这个东西,比拼音打字难,但是比什么C++还是易学得多。
这么多年实战、沉淀下来的经验,真是用都用不完,只要会查资料,肯实践,从零自学妥妥的。

当然,学习是要思考和实践的,而不是找一份资料,上面有你想要的一切东西,只要复制过来就包治百病。
世界上没有这种资料,更不会有这种学习方法。

资料领进门,修行靠个人。人在工作中,也是不断学习的过程,不同行业和工种需求不一样,如果你有这方面的需求,不妨试试看,学VBA真的不难。至少,比考个什么证容易多了,这里又不用考试,又不用背东西,现成的代码一抓一大把,真不行还可以去论坛问。

而网上虽然有很多编程1000例,或者长篇大论的从入门到精通,甚至还有收钱的培训课程,但是我告诉你,这些都不需要。
你在工作中,有什么需求,想一想是否可以用代码自动化,然后把需求拆分成小点。
比如“筛选范围内特定数值并高亮”这个需求,就可以拆分成“指定/选中单元格范围”,“判断选中单元格数值”,“设置选中单元格颜色”,搜一搜实践一下就行了。VBA这东西不考试,看书背题都没大用,更不需要花钱培训。

百倍年薪!从零开始学VBA

至于实际的功效,还得看具体情况。
像上一篇评论的这位仁兄,遇到了不错的领导,就得到了不少晋升的机会。当然,像我这样干得越多、越好,却只有活更多,工资和职位不升的,那也只能说运气不好,那你就把节省起来的时间,用在别的方面的学习上。学无止境真的没说错。

升职加薪了之后记得来打个赏哦~

小编注:本文作者@波导终结者  是什么值得买生活家,他的个人自媒体信息为:

新浪微博:@波导终结者(https://weibo.com/u/1016801521

扶持推广个人品牌是生活家新增福利,更多详细内容请看生活家公告(https://news.smzdm.com/p/26967/)。欢迎大家踊跃申请生活家,生活家中表现优异的用户还将有机会成为『首席生活家』,欢迎有着特别生活经验的值友们踊跃加入生活家大家庭!




推荐关注:
生活记录
话题:生活记录 +关注
每天涨点小知识
话题:每天涨点小知识 +关注
办公软件
分类:办公软件 +关注

提示

鼠标移到标签上方,

尝试关注标签~

评论14

发表评论请 登录
  • 最新
  • 最热
  • 14楼
    1

    还没赚到钱 先打赏下
    excel重度用户 水平还停留在录制宏和vlookup 透视啥的 有时候累成狗 看看人家写好的vba一键输出的表 一劳永逸 心羡不已 但是一直也没行动
    看大家讨论的热烈 我觉得数据处理和呈现趋势 状态
    最后的路应该是一键分析 提需求和明确最终效果 至于怎么实现就交给AI

    现在大数据和AI是个趋势,不过短期内个人是还接触不到,如果有机会可以了解一下,终会有用的~

  • 13楼
    1

    现在还学vb出去怕是找不到高级点的工作,vlookup了解一下,再不然宏录制功能了解一下。
    如果你说复杂的数据处理,有这个时间可以学python or R。
    对了因为宏有安全问题,很多公司都是禁止用宏的。

    2

    噗,vlookup和宏都是vba的封装应用,可以看我上篇的自定义函数教学,函数也好录制的一段宏也好,最终表现形式还是若干vba代码。古有何不食肉糜,您这个说法正相反,吃肉怕是要饿死,吃土了解一下?

    4

    怎么方便怎么来,何必拘泥于一种语言,vba和Python一起用不好吗?

    他在不懂装懂,以为谈到python就比较高级。不管是vlookup还是宏录制,就算把vba换成python,仍然是同样功能的脚本,封装成同一个函数或者宏。能把vlookup和宏说得比脚本本身高级的,说明连最基础的概念都还不懂,只知道百度一些技术名词而已。

  • 12楼
    10-12 01:05
    1

    现在还学vb出去怕是找不到高级点的工作,vlookup了解一下,再不然宏录制功能了解一下。
    如果你说复杂的数据处理,有这个时间可以学python or R。
    对了因为宏有安全问题,很多公司都是禁止用宏的。

    2

    噗,vlookup和宏都是vba的封装应用,可以看我上篇的自定义函数教学,函数也好录制的一段宏也好,最终表现形式还是若干vba代码。古有何不食肉糜,您这个说法正相反,吃肉怕是要饿死,吃土了解一下?

    3

    想吃肉直接学python阿,何必要浪费时间在一个已经快被放弃的语言上呢?微软提供了更方便的使用方式就是想慢慢淘汰vba。

    怎么方便怎么来,何必拘泥于一种语言,vba和Python一起用不好吗?

  • 11楼
    10-12 00:28
    Visa淘金计划芝麻信用

    还没赚到钱 先打赏下
    excel重度用户 水平还停留在录制宏和vlookup 透视啥的 有时候累成狗 看看人家写好的vba一键输出的表 一劳永逸 心羡不已 但是一直也没行动
    看大家讨论的热烈 我觉得数据处理和呈现趋势 状态
    最后的路应该是一键分析 提需求和明确最终效果 至于怎么实现就交给AI

  • 10楼
    10-11 13:07
    1

    现在还学vb出去怕是找不到高级点的工作,vlookup了解一下,再不然宏录制功能了解一下。
    如果你说复杂的数据处理,有这个时间可以学python or R。
    对了因为宏有安全问题,很多公司都是禁止用宏的。

    2

    噗,vlookup和宏都是vba的封装应用,可以看我上篇的自定义函数教学,函数也好录制的一段宏也好,最终表现形式还是若干vba代码。古有何不食肉糜,您这个说法正相反,吃肉怕是要饿死,吃土了解一下?

    想吃肉直接学python阿,何必要浪费时间在一个已经快被放弃的语言上呢?微软提供了更方便的使用方式就是想慢慢淘汰vba。

  • 9楼
    10-10 20:39

    学习了,赞一个

  • 8楼
    1

    excel vba效率堪忧。

    什么工具做什么事情。你拿VBA来处理超大表格,或者读写千万条的数据库那肯定慢。微软自家的Access百万条以后也开始有严重的性能下降。汽车虽然开得快,小巷胡同进不了。根据不同需求,选择不同工具和方式,是效率的基础,也是升职加薪的第一步。

  • 7楼
    10-10 16:12

    我更想知道如何百倍年薪! [皱眉] [皱眉] [皱眉]

  • 6楼
    10-10 14:54

    这叫从0开始??!! [损失几个亿] [损失几个亿] [损失几个亿] [损失几个亿]

  • 5楼
    1

    现在还学vb出去怕是找不到高级点的工作,vlookup了解一下,再不然宏录制功能了解一下。
    如果你说复杂的数据处理,有这个时间可以学python or R。
    对了因为宏有安全问题,很多公司都是禁止用宏的。

    噗,vlookup和宏都是vba的封装应用,可以看我上篇的自定义函数教学,函数也好录制的一段宏也好,最终表现形式还是若干vba代码。古有何不食肉糜,您这个说法正相反,吃肉怕是要饿死,吃土了解一下?

  • 4楼
    10-10 13:39

    excel vba效率堪忧。

  • 板凳
    10-10 13:25

    现在还学vb出去怕是找不到高级点的工作,vlookup了解一下,再不然宏录制功能了解一下。
    如果你说复杂的数据处理,有这个时间可以学python or R。
    对了因为宏有安全问题,很多公司都是禁止用宏的。

  • 椅子
    10-10 12:17
    芝麻信用

    vba工作时候超级有用

  • 沙发
    10-10 11:20

    你以为我看懂了吗?是的,我认识字,但不知是啥意思!

评论举报

请选择举报理由

135 14

关注数量超出限制,请先删除部分内容再尝试

关注数量超出限制,
请先删除部分内容再尝试

登录
注册
用户名/邮箱
密码
验证码
看不清?点击更换
看不清?点击更换 忘记密码?

已收藏
去我的收藏夹 >

已取消收藏
去我的收藏夹 >

小提示