我意外地创build了一个vba竞赛条件?

我希望对一些我无法复制的bug有所了解。

我有一个非常复杂的工作表,改变了许多variables来获得一个特定的单元格aa5返回一个string。 如果任何条件不满足,则返回0 。 该单元的公式是

 =IF(SUM(AA2:AA4)=0,SubItem,0) 

其中aa2:aa4是必须返回一个string的条件,子项是一个命名的单元格范围。

一旦它返回一个string,我有一个模块将单元格aa5粘贴到不同的表单export 。 问题是,我运行例程后,(大约需要20分钟),我在export表中find0值。

我已经尝试手动更改所有variables的条件,创build错误,没有出现。 我也尝试通过代码逐行运行,似乎无法复制那里要么。

我的最后一根稻草是插入到export表中的模块中

 If Worksheets("analysis").Range("aa5").Value = 0 Then Exit Sub 

运行后仍然有0个值!

我不是一个真正的程序员,但我有一些VBA代码的经验,是否有可能创build了竞争条件,其中0被复制之前, if更新,但它仍然通过vba检查?

尝试在使用V​​BA之前计算您的值:

 With Worksheets("analysis").Range("aa5") .Calculate If .Value <> 0 Then Worksheets("export").Range("A1").Value = .Value End If End With