我在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 ,_ 1965range2rng 都是有效的,据我所知,并显示有效的 .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的内容的任何想法?

注意:为了给出重现它的确切方法,我必须发布我的整个电子表格和代码,我不愿意这样做 . 如果需要,我仍然可以发送一对一 .