这个问题取决于你眼中的“中等”水平是指什么水平,以及你本身有没有编程基础。假设你本身没有编程基础,但是智商中等偏上的话,那么:

如果是把一些工作中简单但又重复的步骤写成小程序,那么大约需要40个小时吧。

这40个小时,你要做这么几件事:

1. 了解如何在Excel选项→信任中心→宏设置中选择“启用所有宏”;了解一些基本常识比如说带有宏的工作簿要保存为.xlsm的格式,也就是启用宏的工作簿;然后了解怎么把“开发工具”弄到Excel的功能区;知道用Alt+F11可以调出VBA编辑器;编辑器里的按钮都是些啥诸如此类的小事。这可能需要一个小时吧。

2. 你要搞明白Excel VBA就是利用代码来干活,利用代码来教Excel去做你要它做的事情。最简单的一些代码你看看,比如 Range(“A1”).value = 1, 你可以想想这会是什么效果,Range是“范围”的意思,在Excel里range是指一个单元格,那么Range(“A1”)就是指A1这个单元格,value的意思是“值”,那么这句话就是说A1 这个单元格的值等于1,要是你程序里写这样一句话,然后你一运行程序,那么A1单元格就会出现一个1.这句代码就做了给A1单元格赋值这件事。

然后你可以想想这句代码,MsgBox “Hello”是什么意思,MsgBox是message box的简称,意思是信息盒子,那么这句代码会做的事情就是会弹出一个信息框,框里写着hello。

所以VBA其实很好理解的,当然你的英语要过四级才行,看到代码基本能猜到意思。网上找找一些入门小程序,看看代码随便猜猜来找一下感觉,可能又一个小时吧。

3. 正题开始了,一般学习VBA都会先学一会儿录制宏,录制宏是什么意思呢,就是你一开始录制,Excel就开始记录你做了什么事情,你停止录制的时候,Excel就保存了你刚才做的那些操作。

比如说,你用鼠标先选中A1 单元格,你一点击录制宏的时候Excel就会生成一个宏(也叫macro),然后你在A1单元格里面输入1,然后点击停止录制,Excel就把你的步骤保存在那个刚刚生成的macro里,你要是把A1单元格里的东西删了,再运行一下macro,你会发现A1单元格里又出现了1. 为什么呢?因为你刚刚录制宏的时候就是给单元格A1里面输入了1,所以Excel记录了这个步骤,你再运行这个宏,它就重复你录制时候的步骤,给A1输入个1。

你猜这个macro里面有什么呢?就像上一条说的,程序是用代码来控制Excel进行一些操作,那么录制宏(macro)要记录操作,自然就是记录一些代码了,也就是说,宏里会出现一句话,

Range(“A1”).value = 1

录制宏的时候,聪明的Excel自动把你的操作转为代码记录在宏里,那么运行这个宏就是运行这条代码,就完美地复制了你的行为了。

了解宏,练习录制宏,练习完之后看代码,根据你的需要进行改动,这个过程需要3小时吧,粗略估计。

什么是看代码改代码呢,就比如说,你刚才录制的那一条是给A1单元格赋值,所以你得到的代码是Range(“A1”).value = 1, 但是你实际要放到程序里的有两个动作,你还想给A2单元格赋值2,那么你就可以直接把上面那条代码改成Range(“A2”).value = 2. 不需多解释了吧,看看你就会明白啥意思了。

所以之前的看代码找感觉练习也是很有用的。

4. 真正开始学习VBA编程,要稳扎稳打,学练结合。这时候就枯燥多了,要学习很多基础概念,比如说什么叫常量、变量,数字1是常量,也就是说1就是1,你不会拿它表达别的意思,但是程序中某个数字会随着程序运行而变化呢,你就不能只写数字了,你就需要一个变量来放这个数字,那么就可以自己规定一个变量,比如说给变量取个名叫num,然后你规定这个num是专门用来放整数的,然后你写个num = 1, 那么以后用到num就是和用数字1是一样的效果,然后程序运行了一部分,你又想要将num改成2,那就写一句num = 2来把变量num的值改成2. 诸如此类的概念,然后一些语法语句,大约需要15个小时。一定要边看边动手写,把一个一个代码敲出来,才能大致记住这些概念以及语法。

5. 带着一些逻辑思维来编程并且练习,这个时候要开始构思一些小程序了,不再是那么三两句代码实现一个步骤,而是要用几十或者几百行代码来实现一些独立的功能。假设你要批量修改单元格格式啦,这样就会有定义变量;循环打开一个文件夹里的工作簿,每打开一个工作簿就会按你的要求修改格式,然后一直做到最后一个工作簿就算结束程序。做这样的小程序练习那么20个小时吧。这些小练习可能会涉及到一些用户窗体,自定义函数等有些难度的部分,不过也不会难死人了。

经过以上五步练习(大约40小时),VBA算是入门,可以用来帮自己完成一些任务,减轻工作量啦。不过这只是入门。接下来你可以思考如何做独立的工具,让其他人也可以使用你的小程序,那麻烦可就又多了至少一倍了,你要设计用户界面,告诉别人要输入些什么,然后防止其他人乱输入数据,如果别人乱输入了数据要保证不会死机等等,然后还要做一些查错报警的小步骤,这些就要在实务中摸索了,你会发现,妈呀,给别人用可真麻烦啊~这些都达到了之后基本就没啥问题了,再有难点可以去一些论坛看看,很可能别人有相似的问题然后已有大牛帮忙解决,你抄抄他们的代码就行了,微笑。大不了自己问一个嘛,程序员们都很热心的。

然后呢,这些其实只是最基础的使用VBA的步骤,和所有的编程语言一样,语言只是工具,最重要的是思维,是算法,这说起来就太多了。

一个有一定编程经验(也就是算法有基础)的人,拿起VBA不过十来个小时的事儿吧~

对了,自学可能会慢一些,看你平时的自学效率了,我不清楚,不过我推荐报班。

要是觉得有帮助就点个赞嘛。

更多推荐

mysql和vba哪里自学_自学 VBA 到中等水平一般需要多久?