【分享成果,随喜正能量】生如逆旅,一苇以航,别不好意思拒绝别人,他都好意思为难你,你又在拿捏什么。如果有人跟你说这不是钱的事,那就是钱不够的事,别高估关系,别试探人心。。
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的劳动效率,而且可以提高数据处理的准确度。我推出的VBA系列教程共九套和一部VBA汉英手册,现在已经全部完成,希望大家利用、学习。
如果您只是一般的职场VBA需求,可以打包选择7.1.3.9教程+汉英手册,第7套教程是入门,第1套教程是入门后的提高,第3套教程字典是必备的VBA之精华,第9套教程是实用的典型案例讲解。这四套教程内容掌握后足以处理一般工作中的问题,实际写代码的时候再辅助代码汉英手册,足矣!如果您想进一步提高,就需要选择高级阶段的教程了。
VBA是面向对象编程的语言,博大精深。很多朋友咨询VBA的学习方法,我会陆续给大家讲解一些我的经验,大家可以慢慢体会。今日的内容是:3.3.1 VBA代码程序运行时间的优化与视觉效果的兼顾
3.3 学习提高过程中的思考(贯彻我的编程思想)
在学习过程中,我们要同时思考几个问题,这也是我们学习过程中的提高。
3.3.1 VBA代码程序运行时间的优化与视觉效果的兼顾
在《VBA代码解决方案》第二册的85讲到89讲,我讲了程序优化的问题,其实在这些章节中,我也一直在讲视觉和程序运行时间的兼顾问题。我在做程序的时候,往往注重的是前者,而不是后者,为什么呢?其实VBA带给我们的就是实用,真正要求做到节约时间往往是那些大型程序考虑的范畴。正如我在讲到VBA地位时的比喻,那些大型程序是城市与城市之间的高铁啊、火车啊、飞机啊,而VBA只是连接车站到家之间的汽车、电动车,当你考虑大型数据处理时最好要借助大型程序,如Python、PHP、GO、JAVA等等,从严格意义上讲,VBA不能称之为一种独立的语言体系,只是寄生于OFFICE的一条寄生虫,但你不要小看它,这部分交通运行不顺畅,也会引起城市的拥堵,工作效率的低下。所以,我们在工作中主要考虑的是视觉的效果,其次才是时间的节约。如何做到视觉的愉悦呢?下面我就来就一段实际的程序和大家分享。今天的程序读者也可以作为一个工具利用。
需求:建立一个工作薄1,写入代码,代码执行首先打开另外一个指定工作薄2,把其中工作表sheet1中A,B列的内容写入数组,然后关闭工作薄2,回到工作薄1,把数组数据保存到工作表1的CD列中。
这个案例在实际工作中会经常用到,或者类似的应用非常多,大家可以记住下面的代码。
要利用到的知识点:
1 工作薄的打开;
2 数据写入数组;
3 数组数据的导出。
今天我利用到了《方案》第三册第113讲的内容,将一个工作薄中工作表的数据写入数组,然后导出,看下面的代码截图:
代码:
Sub mynzkk()
Dim a(5000, 2)
Workbooks.Open Filename:=ThisWorkbook.Path & "\工作表.xlsx" '打开一个指定存储数据的工作薄
Workbooks("工作表.xlsx").Activate '让数据的工作表处在激活状态
MsgBox ("数据已经打开,是否继续?") '判断是否继续
Sheets("SHEET1").Select
k = 0
i = 1
'数组,并赋值
Do While Cells(i, 1) <> ""
k = k + 1
Cells(i, 1).Select
a(k, 1) = Cells(i, 1) '写入数组
a(k, 2) = Cells(i, 2)
i = i + 1
Loop
Workbooks("工作表.xlsx").Close '关闭数据工作薄
Workbooks("工作簿1.xlsm").Activate '让主程序的工作薄处在激活状态
Sheets("SHEET1").Select
[C1:D65536].Clear '清除原有数据
MsgBox ("下面将写入数据,请确认!")
For i = 1 To k
Cells(i, 3).Select
Cells(i, 3) = a(i, 1)
Cells(i, 4) = a(i, 2)
Next
MsgBox ("OK!")
End Sub
代码讲解:上述代码中,为了照顾到视觉,我加了四条语句如下所示:
目的:
1 让程序的运行可视,操作者可以随时知道程序运行到了哪里。
2 让应用这个程序的人有个主动的感觉,好像是自己在操控着程序的运行。这也是从心理上来取悦程序的使用者。其实不加这些都是可以的。
程序文件:
Ø时间与视觉.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: