我在Excel和VBA中遇到了一个奇怪的问题 .
我在各种 FormatCondition
上调用了 ModifyAppliesToRange
,还有很多其他相关的东西 .
它工作正常一段时间(大约2-300个调用)然后无缘无故地我可以看到我的Excel(和VBA开发环境)将关闭,没有错误来自我的错误处理程序或excel,没有通知,除了一个没有“暂停”,直到崩溃才会发生任何事情 . 无论我是正常运行还是使用断点和步骤,都会发生这种情况 .
根据WorkSheet的确切内容 FormatConditions
,它的确切工作次数似乎有所不同 . 但是如果起始条件相同,那么失败点是相同的(即它在相同的 FormatCondition
上失败) . 代码失败的是:
myCF.ModifyAppliesToRange Union(range1, range2)
哪里 myCF As FormatCondition
我试过了
Dim rng As Range
Set rng = Union(range1, range2)
myCF.ModifyAppliesToRange rng
我查了一下: myCF
,_ 1965, range2
和 rng
都是有效的,据我所知,并显示有效的 .Address
字符串(范围) . 例如,它将在 range1.Address
= "$DO$9:$GN$39,$BD$8:$BD$39"
, range2.Address
= "$CI$9:$DN$39"
上失败,结果 rng.Address
= "$BD$8:$BD$39,$CI$9:$GN$39"
所以我试过了
Set rng = Union(Range(CFFrom.AppliesTo.Address), Range(CFTo.AppliesTo.Address))
同样的问题 .
偶尔(在不同的开始条件下)它将超过上面的 ModifyAppliesToRange
但是当我看到 myCF.AppliesTo.Address
时,同样的崩溃发生 - 无论是将鼠标悬停在它上面,还是在 Watch 中显示它,或者在立即显示它 . 然而 rng.Address
没有给出这样的问题 .
然而它似乎也可以正常工作2-300次 .
我怀疑存在内存问题(但Excel没有使用太多内存或CPU,计算机上有足够的空内存,我使用了Option Explicit等等)或Excel中的硬限制或错误
关于为什么会发生这种情况的任何想法?关于如何找出关闭Excel的内容的任何想法?
注意:为了给出重现它的确切方法,我必须发布我的整个电子表格和代码,我不愿意这样做 . 如果需要,我仍然可以发送一对一 .