分享

终于找到原因了!这会心里踏实了!

 冷茶视界 2024-04-23 发布于江苏
大家好,我是冷水泡茶。
4月20日分享的【付款申请单】有点问题,昨天也进行了【优化更正】,但似乎还是有点不正常,不把它解决了,心里总觉得不踏实。
今天上午我就又打开它来检查,发现选择付款单号以后,Excel文件失去响应,过一会就自动关闭,到底是什么鬼,昨天在家里的电脑上不是好好的吗?虽然有点慢。
问题肯定出在工作表的Change事件上,慢慢调试看吧。
我在给日期单元格赋值的地方设置断点:
然后,在“付款申请单”表中选择一个付款单号,程序正常中断,我查看数据arr,也是正常的,能查到数据。
接着,我把下面的一条给付款单号单元格赋值的语句也设置中断:
继续运行,好像也没什么问题,正常停在中断处,我就继续点运行,诡异的事情发生了,程序又中断在日期单元格赋值的地方,我继续点运行,它就在日期付款单号这两句代码之间循环:

问题就在这,但到底为什么呢?
想了半天,终于发现,下面这条语句有问题:
clsRG.付款单号 = arr(1, 0)
它不停地触发工作表的Change事件,使得程序陷入一个死循环,它完全是多余的。
我们在手动选择付款单号的时候,需要触发工作表的Change事件,查询对应单据号的数据并填写到工作表中,此时,工作表中的付款单号已经确定,不需要再给它赋值,而且,在这里也不能给它赋值,否则又会触发工作表的Change事件,陷入死循环。
问题找到了,赶紧把它删掉,再一试,查询速度相当丝滑!

就一个字:完美!

咦,那不是两个字吗?

Whatever!

后记

1、今天这个无限循环的Bug,应该属于粗心大意造成的,写的时候没有意识到,出错的时候也没有想到

2、为了排除异常,我甚至把两张工作表的CodeName都进行了修改,似乎也没起什么作用。

3、其他的异常,跟这个无限循环也有关系吗?不得而知。

4、后来,我把文件复制到另一台电脑上,用wps打开,似乎也能正常运行了。

5、动态设置单元格数据验证的方法,也可以改为使用【复合框ComboBox控件】。

好,今天就到这里,我们下期再会!
~~~~~~End~~~~~~

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多