vba代码运行没反应(vba强制停止运行怎么办)

   

高高兴兴地写个Demo,却不知是谁的错

使用VB/VBA处理数据,当量较大时,是不是经常看见转圈圈,而干不了其他事情?如果点击鼠标,是不是会提醒你结束某某应用程序?如果文件未保存,是不是宁愿认怂,也不敢点结束?

有人说,数据量大了,VB/VBA就成了渣渣,是真心不太行耶。可是,有没有想过为什么呢?难道真的是因为数据量大,忙不过来吗?

这要从Windows系统说起,话说芯片从早期的4004芯片的740kHz的频率,到现在动辄N个GHz,为何在频率上一路高歌猛进呢?现代通用计算机,都是分时、多道多任务的,只有将时间切分得足够细小,才能达到多任务目的。

相信大家对闪电侠不陌生,中国武术里,也讲究天下武功唯快不破。只要你足够快,仿佛时间都可以停下来等你。这对操作系统也是一样的,硬件有细分时间的能力,系统也能捕捉到这种维度的变化,那么系统就可以把硬件资源在一定时段上调度给尽可能多的任务。

人类可感知时间颗粒,最小也是几十上百毫秒,这种粒度对于计算机而言,是一个可以做很多事情的时段了。反过来对人而言,这些很多串行的事情,却可以认为是在同时工作,所以,我们在电脑上一边可以聊天,一边可以看电视,而互不影响。

但是,如何分配这种维度的时间资源,却有不同的流派。有的流派认为,每个程序都是公平的,当然资源也得公平分配。而有的流派却认为,这世间本就不公平,任何事情总会有轻重缓急。

Windows显然属于后者,所以也叫抢占式系统。系统给每个线程都分配优先级,优先级高的将优先获得系统资源,反之就需要排队等待。为了兼顾公平,系统会整体权衡每个线程的优先级,会降低那些长期霸占资源的高优先级线程的优先级,这样其他低优先级线程,通过排队总会有机会的。

当我们使用循环处理大数据时,需要长期占用系统资源,这样系统就会不断地降低工作线程的优先级,当低于其他线程优先级时,当前工作线程就会被挂起等待。我们以为程序忙得不可开交,其实是因为被系统给挂起了。

这便是VB/VBA程序假死,不响应的最主要原因。欢迎关注BtOfficer,更多好料,不定期更新哦。

(0)

相关推荐

  • VBA代码编写技巧

    方法1:尽量使用VBA原有的属性、方法和Worksheet函数 由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对 ...

  • 将VBA代码编译封装成为DLL动态链接库的方法

    一、为什么要编译成为DLL 我们知道,Visual C++、Visual Basic和C++ Builder以及Delphi等编译器所编译出来的程序不容易被人破解(相对来说),这是因为代码被编译成了可 ...

  • excel用vba代码隐藏行的方法介绍

    今天为大家分享excel中使用vba隐藏行的方法,不会的朋友可以参考本文,来看看吧! 步骤 1.首先我们打开一个工作样表作为例子. 2.隐藏行的方法很简单,在工作表的行序列上点击鼠标右键,选择隐藏行即 ...

  • 如何让EXCEL文件只能在某台计算机上打开的VBA代码

    如何让某个EXCEL文件,限制在某台电脑上打开,而其它电脑不能打开该EXCEL文件。 这得借助VBA代码来实现。 只需要在工作薄打开的事件中,添加如下代码即可。 Private Sub Workboo ...

  • word修改页边距/纸张纵向/装定线等vba代码

    下面的WAPP是事先定义的word文档工程变量。 以下代码为通过VBA代码来实现页面的页边距、纸张纵向、装定线、页眉页静等。 复制代码 代码如下: WApp.ActiveDocument.PageSe ...

  • 怎样利用VBA代码编写一键插入Excel斜线表头

    有的时候,我们要在Excel中添加斜线表头,可Excel并没有提供制作斜线表头的功能,每次都要手工画一条斜线,非常麻烦。有没有解决方法呢?其实,我们可以利用VBA代码可以编写一个功能,一键插入Exce ...

  • 如何设置Word表格的VBA代码

    VBA代码设置Word表格属性。 Dim i As Table, N As Integer On Error Resume Next ’忽略错误 Application.ScreenUpdating ...

  • 让EXCEL文件只能在某台计算机上打开的VBA代码

    如何让某个EXCEL文件,限制在某台电脑上打开,而其它电脑不能打开该EXCEL文件。 这得借助VBA代码来实现。 只需要在工作薄打开的事件中,添加如下代码即可。 Private Sub Workboo ...

  • 设置Word表格的VBA代码

    VBA代码设置Word表格属性。 Dim i As Table, N As Integer On Error Resume Next ’忽略错误 Application.ScreenUpdating ...

  • excel双击列标题自动排序的VBA代码

    通过以下的VBA代码,将其放到工作表的双击事件中,就能取到双击工作表的列标题(双击列的名字),当前列自动进行排序。 比如,将代码放在如下的事件中: Private Sub Worksheet_Sele ...