Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否意外创建了vba竞赛条件?_Vba_Excel - Fatal编程技术网

我是否意外创建了vba竞赛条件?

我是否意外创建了vba竞赛条件?,vba,excel,Vba,Excel,我希望能对一个我无法复制的bug有所了解 我有一个非常复杂的工作表,它更改了许多变量,以获得某个单元格aa5以返回字符串。如果不满足任何条件,则返回0。该单元格的公式为 =IF(SUM(AA2:AA4)=0,SubItem,0) 其中,aa2:aa4是返回字符串必须为0的条件,subitem是命名的单元格范围 一旦它返回一个字符串,我就有了一个模块,可以将单元格aa5粘贴到另一张表export。问题是,在我运行例程之后,(大约需要20分钟),我在导出表中找到了0个值 我已尝试手动将所有变量更改

我希望能对一个我无法复制的bug有所了解

我有一个非常复杂的工作表,它更改了许多变量,以获得某个单元格
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
。另一个可能的问题-您的工作簿可能有手动计算模式