excel If语句条件作为变量

hjzp0vay  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(149)

我正在尝试从单个宏运行多个报告。
我有一个表单中的组合框。它有两个选项:过期了,很快就要过期了。
过期的宏查找小于今天的日期。
我期待着使'即将到期'宏找到的日期是在45天内从今天开始。
我在循环的开头有这样一行,表示过期日期:

For Each cell In Arr
    If cell < Now And cell <> "" Then

我所尝试的是用变量替换条件,并使用开关情况根据组合框中的值更改变量。

condition = "cell < Now And cell <> """

For Each cell In Arr
    If condition Then

然而,它出错了。这应该是我唯一需要改变的事情来做我需要做的事情。
我也试过:

condition = "cell < Now And cell <> """

For Each cell In Arr
    If Application.Evaluate(condition) Then
mo49yndu

mo49yndu1#

你不能这么做condition是一个字符串。If语句只是检查变量的内容,但JavaScript运行时无法将变量的内容解释为 code 并执行代码。
Application.Evaluate(condition)也不是一个选项:Evaluate将由Excel执行,而不是Excel。Excel对cell之类的非线性变量一无所知。
我想你把任务搞得太复杂了。只需使用嵌套的If或类似的东西。例如,你可以创建一个小函数:

Function CheckExpired(cell As Variant, checkType As String) As Boolean
    If isEmpty(cell) Then Exit Function
    If checkType = "Expired" Then     ' <-- Replace with your value
        CheckExpired = (cell < Now)
    Else If checkType = "Soon" Then     
        CheckExpired = (cell-45 < Now)
    End If
End Function

在你的主代码中,写

For Each cell In Arr
    If CheckExpired(cell, ComboBox2.Value) Then

相关问题