【问题标题】:Excel VBA & nested ifsExcel VBA 和嵌套 ifs
【发布时间】:2013-11-10 23:02:40
【问题描述】:

如果满足以下两个要求,我将尝试通过 VBA 删除 Excel 2007 中的一行:终止日期大于提供的日期(变量 datesToRemoveTerminatedMembersFrom)以及列 R 中有“D”。

我使用的代码没有给我错误,但也没有删除该行:

For i = lastRow To 2 Step -1
    If Range("R" & i).Value = "D" Then
        If Range("D" & i).Value > datesToRemoveTerminatedMembersFrom Then
            Rows(i).Delete
        End If
    End If
Next i

它们都单独工作,但如果我嵌套它们,则不会。

提前感谢您的帮助

【问题讨论】:

  • 它对我有用..你定义了lastRow 吗?
  • 嗨 Sam092 lastRow 是在脚本前面定义的

标签: excel if-statement nested vba


【解决方案1】:

试试下面的代码

For i = lastRow To 2 Step -1
    If UCase(Range("R" & i).Value) = "D" Then
        If CDate(Range("D" & i).Value) > CDate(datesToRemoveTerminatedMembersFrom) Then
            Rows(i).Delete
        End If
    End If
Next

【讨论】:

  • 我试过了,但它删除了 R 列中 D 值的所有内容。
  • @Chris 在If CDate(Range("D" & i).Value) > CDate(datesToRemoveTerminatedMembersFrom) Then 添加断点。这将显示条件是如何工作的。确保日期格式相同。
【解决方案2】:

我实际上不再需要这个了。我为其设置电子表格应用程序的人要求我删除终止日期大于归档日期的每条记录。

实际上的意思是用“”替换终止日期,而不是删除行,doh。

感谢您的帮助,我最后使用的代码是:

For i = lastRow To 2 Step -1

        If CDate(Range("D" & i).Value) > CDate(datesToRemoveTerminatedMembersFrom) Then
            Range("D" & i) = ""
        End If

Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多