2024-01
14

家里的VBA也出状况了

By xrspook @ 10:01:56 归类于: 烂日记

说晚上回家跟往常一样工作,却发现某个VBA排序的功能不知道为什么选不到了,那个VBA里面我设定了好几个宏。使用的时候我打开一个新的文件,然后调用某个VBA文件里的某个宏实现某种功能,现在的情况是某个VBA文件里面的某个宏我选不到了,之前从来没有发生过这么屌丝的事情。不仅仅是alt+F8的时候选不到了,当我当alt+F11进入VBA脚本编辑界面的时候,某些宏居然也点不进去了,模块也无法选定。那个时候我真的是非常无语,为什么居然会发生这种事呢?为什么有一些宏就可以,另外一些就不可以?幸好排序的那个功能即便无法用宏去实现,我依然可以轻易手动完成,但是这么诡异的事情实在让我不知道该怎么办。

我完成了那天的工作以后,我首先把office升级了,升级到了最高的版本,同时也把win10的系统进行了更新。所有东西升级完还没有重启之前,我测试那个之前诡异的VBA文件。好像情况又不像我工作的时候遇到的那么糟糕,但是情况时好时坏,有时能选择得到,有时选择不到。当我彻底更新的重启再次进入系统以后,发现那个VBA好了,彻底的好了,但是有时也会出现一点点鼠标转圈的卡顿。我的VBA都还没有进行任何的操作,为什么就卡顿了呢?

周六晚上我又进行一些很常规的操作的时候发现VBA的某些宏又出现了我办公室那台电脑上曾经困扰我的事情。会直接跳出来说,某些copy的功能不可用,你可以进行调试或者结束。这种东西是完全没有道理的,因为之前我都一直还在用着那个文件,没有进行任何的修改。如果说宏的某些问题跟跨表调用数据有关,但在这个出了copy问题的宏里根本就没有进行这种高端的操作。弹窗的报错是因为文件某个另存为的功能无法实现。为什么会有如此低端的问题呢?我隐约记得办公室的那台电脑出现这个问题的时候,我把电脑重启,然后就好了,什么都没有修改。

所以这到底是什么问题导致出这种错误呢?我严重怀疑周五晚上我遇到的那种事情,是因为win10正在后台悄悄地进行升级。首先是下载文件,会占用我大量的CPU和内存,因为家里这台电脑是2012年组装的,已经非常年迈了,i3二系的CPU进行日常的操作,上个网之类完全没有问题,但如果win10要进行大量的资料下载,同时也要进行那些东西的安装,我说不准会不会就会产生问题。理论上要不要升级,什么时候升级都应该由我来决定,但实际上win10在升级这个问题上,总是悄悄地在后台自动进行,当它提醒我的时候,通常下载和安装都已经完成,最后就只是让我决定什么时候重启。

单位办公室那台电脑出现那个问题的时候,我也觉得应该跟windows或者office的某些更新有关,但是我遇到问题的那个时间跟升级的那个时间相差挺远,没有找到接近的,所以我就没有继续在那里纠结。单位办公室那台电脑,VBA出不出状况,很难说情况,时好时坏,可能一天下来都没事,但也有可能一天会撞上好几回。有些时候把同样的文件复制过去,再次使用就没有问题了,有些时候得重启一下就好了。除了这两款以外,我实在找不出还有什么解决方案,但幸好这两款还暂时还能应付的过去。家里这台电脑之前我一直没有遇到过VBA相关的问题,周五晚上是我遇到的第一次,周六马上遇到了第二次。

Windows用了那么多年,VBA也用了那么多年,但微软居然会在这些如此普通的事件上面犯错误,所以如果我只是需要求稳定,我还可以相信谁呢?

2020-04
28

相逢恨晚

By xrspook @ 9:00:08 归类于: 烂日记

很多人听到审计的要去查,就会非常紧张。审计到底有多厉害?如果我对自己的业务非常自信,我会怕吗?的确我没什么好怕的,但是我的队友不知道自己要怕。昨天我见识到了一份审计发过来的罪证单。当然这不是直接发给我的,是发给我领导的,但要我去研究该怎么答复上面提到的问题。接到那个文件的时候,我震惊了。因为那是一个宏的Excel。这样的保存方式,就意味着里面一定有一些牛逼的东西。我自己也是一个写脚本的人,我当然知道其中暗藏武功秘籍。那个文件看上去数据不多,但是却非常大,这让我挺震惊。后来我发现可能是我想多了,因为之所以大,是因为里面贴了几个图片,所以很大,并不是因为里面的数量非常恐怖。

拿到那个文件的时候,我不是对数据感兴趣,而是对里面的脚本感兴趣。到底他们写了什么脚本,可以在那么短时间之内汇总校对出我们的数据,然后发现问题呢?后来我发现,其实,他们没有在里面写脚本,我一页一页地翻查过了,但是他们用了宏函数。他们把那些东西隐藏起来,比如说把带公式的工作表隐藏起来。隐藏工作表很好破解。起码他们没有用带密码的方法到锁定工作表,完全不让我把隐藏了的东西取消隐藏。让我觉得有点惊讶的是,他们居然就这么坦荡荡地把他们的研究结果发过来了。他们就不怕我们偷师吗?正常人见到这样的文件早就已经瑟瑟发抖得无以言表了。其实我更想知道他们在得出最终的这份问题清单之前是怎么快速的处理我们的数据的。在数据的汇总以及财务业务处理方面,他们实在是精英,不只是这样,他们对所有东西都非常好奇。他们简单来说有学者的脑袋再加几岁小孩十万个为什么的心。一定程度上,我应该害怕这些人,但是实际上,我却挺喜欢他们的工作风格。他们做的事情跟警察探案没什么区别。他们把一些我们这里的人害怕去面对、囫囵吞枣应付的事情非常有条理地罗列出来,得出结论,并告诉你你犯了那个天条。那种细致和博学简直是到达了一种让我莫名崇拜的地步。

崇拜归崇拜,最终我的领导把那个文件发给我就是要解决上面的数字问题。让我兴奋的是,我居然发现有一些我们的数据跟他们的数据有很大差别的地方原来是他们的公式写错了。明明是应该乘0.6的地方,他们用了除。我不知道他们为什么会犯这种错误,是手误吗?因为其他工作表的同一个公式没有问题,唯独其中两个出差错了。也正是因为那个问题的存在,所以我们的总数在那一块跟他们相差了好几万块钱。在阶梯式计费方面,我觉得他们的公式已经用得很好了,但是即便你厉害到天上去,还是难免会发生某些疏忽。于是,这就启发了我要去研究到底用什么样的计算方式才能减少这种问题的发生,甚至是杜绝这种问题再次出现。

在遇到审计之后,我有种相逢恨晚的感觉。

2019-05
1

继续折腾吧

By xrspook @ 11:27:21 归类于: 烂日记

软件设计出来唯有在使用的时候你才能体现出它的价值。昨天和今天我把自己写的两个VBA用了好多遍,感觉真的是爽歪了,但有些东西只有当你用的时候你才会明白到某些手续的必要性。

比如我写的第1个VBA,那是用来套打的,可以打一个工作表里面的指定行。一开始的时候我的思路是把要打的表都复制到有保存VBA的工作簿里,当时打印结果出来的时候我傻眼了。因为页边距的问题,所以打歪了。打了第1页以后,我就已经意识到这个问题,于是我修改了有VBA代码的工作簿,但即便这样,从其它地方复制过去的工作簿还是不以我理想的方式出现。所以最终我把需要打印的工作簿复制到一个别的地方,文件重命名,然后同时打开那个工作簿以及含有VBA代码的另外一个工作簿。在需要打印的工作簿下快捷键调用另外一个工作簿里的VBA代码。这样的好处是我不需要把VBA代码到处复制,只要我同时打开两个工作簿,我就能实现这个功能。一开始我是不知道的,虽然之前我已经看到过网上有人说可以这么做,这样做的好处就是不需要到处复制VBA代码,因为在Excel里面,2007以上版本里最普通的xlsx是无法保存宏代码的,如果要保存宏代码就必须使用xlsm,当然可能如果你把它降级为2003的版本就可以在里面保存代码。显然最普通的工作簿里面不允许你默认打开或者保存使用宏代码能提高了文件的安全性。自己用的宏代码放在一个自己的文件里,需要在别的文件调用的时候同时打开工作簿,这其实也很方便。自己的工作簿设置的宏快捷键在其它工作簿也一样可以用这很爽。这些东西在我写代码的时候我没有想考虑过。因为我只是个新手,不可能一开始就那么周全。

我写的第2个VBA是用来汇总数据的。理论上我还需要添加一个筛选的功能。这样的好处是每次我不需要把每个工作表里面的所有内容都复制到大表里,而是先进行筛选,然后再选择性地复制过去。这可以减小文件的体积以及代码运行的速度,但另一方面,其实筛选也是需要时间的,是全部东西拷贝快一点,还是先筛选再拷贝快一点呢?对我来说,因为我的数据不算太多,所以目标以外的东西我完全可以视而不见,但是如果我把这条代码给别人用的话,或许先进行筛选然后再复制会更合理一些。设定筛选会让我落入另外一些烦恼,筛选范围是个问题。最简单的当然是某个指令数字的筛选,靠谱一点的是某个范围的筛选,但某个范围又分为了连续以及间断。显然要全部满足这些,从逻辑上我还没想通。在非大牌软件里同时满足这几种东西的貌似我还没见过,所以我没想通可能是因为要实现这些有难度,但并非不可能。比如在设定打印页面的时候,我就可以用单数字,连续数字或多数字实现我的要求,所以这个功能是可以做到的,只是我还没想到应该如何实施。

折腾是一个没完没了的过程,但我会乐在其中。

© 2004 - 2024 我的天 | Theme by xrspook | Power by WordPress