为什么';我的excel vba是否正常工作?

为什么';我的excel vba是否正常工作?,excel,vba,logical-operators,Excel,Vba,Logical Operators,我比较了两张数据表中的数值,并将两张数据表中的相关数据放入各自的数组中。我需要找到匹配的值来运行其他分析步骤 For i = Lbound(Array1) to UBound(Array1) For j = LBound(Array2) to UBound(Array2) If (criteria for Array2) then variable = 11111 Else

我比较了两张数据表中的数值,并将两张数据表中的相关数据放入各自的数组中。我需要找到匹配的值来运行其他分析步骤

    For i = Lbound(Array1) to UBound(Array1)
        For j = LBound(Array2) to UBound(Array2)
            If (criteria for Array2) then
               variable = 11111
            Else
               variable = 22222
            End if
            If variable = Array1(i,1) Or variable = Array1(i,2) or variable = Array1(i,3) then
               more steps
            Else
               more steps
            End if
         next j
    next i
第一个if语句正确设置了变量,但变量与任何条件都不匹配。它不会像它应该去的那样去别的地方。现在我只知道这一点,因为我一步一步地浏览了代码。如果我只是F5并运行它,“Excel没有响应”。我不知道是什么原因把它挂了。我所有的变量都被声明并分配了一个类型,我没有遗漏任何结束语句。我不知道我做错了什么

我需要在代码中检查什么

编辑

对不起,在这种情况下,我不允许在这里上传任何代码。这是和工作有关的,NDA之类的东西。因此产生了伪代码。我需要展示的东西不会有什么大不了的(至少我认为不会),但我不会冒这个险。

我的道歉

事实证明,解决方案与一个命名不好的数组(不是我)和一个简单的打字错误(肯定是我)有关。我敢肯定,如果我被允许发布实际代码,对于堆栈溢出的好公民来说,这将是一个容易解决的问题

不管它值多少钱,我认为在这种情况下我不能这样做是愚蠢的。感谢@ScottCraner和@SuperSymmertry在没有太多内容的情况下尽力提供帮助


太好了,我还是对瓦尔很好奇。如果你有时间的话,我希望你能了解更多这方面的知识。任何来自真人的信息都比Microsoft文档要好。

Array1中的值是否存储为文本?这不是VBA(Array2的标准)”。你想在这里做什么?@ScottCraner数组(i,1)可以是一个数字,也可以是空的。另外两个应该是长的,但我只是仔细检查了一下,本地窗口显示两个都是双的。我的变量是长的。如果这就是问题所在,我不明白为什么,因为一切都是数字。@freeflow它是一个占位符,而不是我的实际代码。这一部分很好用。很难用伪代码确定你的问题。我建议你用实际代码更新你的帖子。您是否尝试过直接使用范围(即不使用数组)。按照@Scott的观点,您是否尝试过类似
variable=Val(Array1(i,1))或variable=Val(Array1(i,2))…
?您是否试图将双精度与If语句进行比较?使用
Val
只是一种消除策略,而不是解决方案。在不知道如何声明或填充数组的情况下,总是有可能实际将数值与
String
s进行比较。注意:
Val(“5.6”)
将字符串
“5.6”
计算为数值
5.6