VBA 代码程序运行时间的优化与视觉效果的兼顾

论坛 期权论坛 期权     
VBA语言专家   2019-6-9 21:27   2119   0

点击上面蓝色字体关注公众号


在《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 让应用这个程序的人有个主动的感觉,好像是自己在操控着程序的运行。这也是从心理上来取悦程序的使用者。其实不加这些都是可以的。

  
分享成果,随喜正能量

长按二维码  关注公众号


长按二维码  关注版主微信

标VBA加好友,获VBA积木信息




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:200
帖子:40
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP