EXCEL评估函数结果不一致

时间:2019-12-30 10:59:04

标签: excel vba

我有一个数据工作表,其格式如下(超过100个列)

enter image description here

然后我有另一个文件,其中包含一些规则(数据文件中每列有多个规则)。我为每条规则制定了vba条件;例如,一个规则是检查数据文件的A列的所有行(50K +行)应仅具有BP或Trip值。所以我将其翻译为低于VBA

DataWB.Worksheets(1).Cells(J,X)=“ BP”或DataWB.Worksheets(1).Cells(J,X)=“ Trip”

enter image description here

验证按钮代码

        f = Trim(ThisWorkbook.Worksheets(1).Cells(2, 3))
        f = Replace(f, "J", 2)
        f = Replace(f, "X", 1)
        Debug.Print Application.Evaluate(f)

现在的问题是,评估抛出类型不匹配,如果我使用CBOOL,它总是返回TRUE。我也尝试了其他变体(例如添加=或?前缀),但似乎没有任何效果。任何帮助将不胜感激。

enter image description here

1 个答案:

答案 0 :(得分:0)

评估无法理解VBA代码,只能使用excel工作表公式,因此我将其替换为图片中的公式,并且现在可以正常使用

For J = 2 To lRow
    For x = 2 To 26
        f = Trim(ThisWorkbook.Worksheets(1).Cells(x, 3))
        f = Replace(f, "WB", SourceWB.Name)
        f = Replace(f, "WS", SourceWB.Worksheets(1).Name)
        f = Replace(f, "R#", J)
        test = Evaluate(f)
        If Not test Then Call LogError(J, x)
    Next x
Next J

enter image description here