我是否意外创建了vba竞赛条件?
我希望能对一个我无法复制的bug有所了解 我有一个非常复杂的工作表,它更改了许多变量,以获得某个单元格我是否意外创建了vba竞赛条件?,vba,excel,Vba,Excel,我希望能对一个我无法复制的bug有所了解 我有一个非常复杂的工作表,它更改了许多变量,以获得某个单元格aa5以返回字符串。如果不满足任何条件,则返回0。该单元格的公式为 =IF(SUM(AA2:AA4)=0,SubItem,0) 其中,aa2:aa4是返回字符串必须为0的条件,subitem是命名的单元格范围 一旦它返回一个字符串,我就有了一个模块,可以将单元格aa5粘贴到另一张表export。问题是,在我运行例程之后,(大约需要20分钟),我在导出表中找到了0个值 我已尝试手动将所有变量更改
aa5
以返回字符串。如果不满足任何条件,则返回0
。该单元格的公式为
=IF(SUM(AA2:AA4)=0,SubItem,0)
其中,aa2:aa4
是返回字符串必须为0的条件,subitem
是命名的单元格范围
一旦它返回一个字符串,我就有了一个模块,可以将单元格aa5
粘贴到另一张表export
。问题是,在我运行例程之后,(大约需要20分钟),我在导出
表中找到了0个值
我已尝试手动将所有变量更改为导致错误的条件,但没有任何变量出现。我也试着逐行运行代码,但似乎也无法在那里复制它
我的最后一根稻草是插入粘贴到export
工作表中的模块
If Worksheets("analysis").Range("aa5").Value = 0 Then
Exit Sub
运行后我仍然有0个值
我不是一名真正的程序员,但我对VBA代码有一定的经验,我是否可能创建了一个竞态条件,如果更新了
,但仍通过了VBA检查,则在之前复制0?在VBA中使用它之前,请尝试计算您的值:
With Worksheets("analysis").Range("aa5")
.Calculate
If .Value <> 0 Then
Worksheets("export").Range("A1").Value = .Value
End If
End With
与工作表(“分析”)。范围(“aa5”)
.算计
如果。值为0,则
工作表(“导出”).Range(“A1”).Value=.Value
如果结束
以
我运行了这个程序,它运行正常,我会在接受之前再尝试几次。我假设单元格将在vba中的if
时计算。你知道为什么不是这样吗?我试着猜测你的工作簿有很多公式,重新计算需要一些时间。VBA不会等到重新计算结束后才显式调用.Calculate
。另一个可能的问题-您的工作簿可能有手动计算模式