使用excel VBA

时间:2015-07-10 21:44:10

标签: excel vba excel-vba

我正在尝试将循环中的单元格值与VBA进行比较。我正在使用的循环就是这个

    For Each r In Rng
If Cells(r.Row, var1) = "string" And Cells(r.Row, var2) = Variable Then
    Cells(r.Row, var3) = "targetstring1"
ElseIf Cells(r.Row, var1) = "string2" And Cells(r.Row, var2) <> Variable Then
    Cells(r.Row, var3) = "targetstring2" 
end if
Next r

我试图允许将条件输入到同一个excel工作簿中的输入表,但我需要将其设置为动态。例如,在输入单元格中,我想放置“= string”和“&lt;&gt; XX”,其中XX是与Variable相同的值。这将允许= /&lt;&gt;从输入表而不是代码控制,并允许用户更灵活地使条件适应他们的情况。

这可能吗?我曾尝试使用evaluate()函数,但无法使其工作。

任何帮助表示赞赏。

谢谢!

1 个答案:

答案 0 :(得分:1)

测试输入:

Test Input

代码:

Sub Tester()

    Dim rw As Range

    For Each rw In Range("A2:C10").Rows
        If rw.Cells(1) <> "" Then
            rw.Cells(3).Value = Eval(rw.Cells(1), rw.Cells(2))
        End If
    Next rw

End Sub


Function Eval(rngVal As Range, rngCrit As Range)

    Dim addr As String, op As String
    addr = rngVal.Address(False, False)
    op = rngCrit.Value

    Eval = rngVal.Parent.Evaluate(addr & op)
End Function

结果:

Output

输入条件时,您可能需要将单元格格式化为文本或前置'以防止Excel尝试将其视为公式