如果日期小于,Excel VBA将删除行

如果日期小于,Excel VBA将删除行,excel,vba,date,delete-row,Excel,Vba,Date,Delete Row,如果“D”列下的日期小于2020年7月1日,我有以下代码删除行。当我将设置为StartString7=44013(值为1/7/2020)时,此代码工作正常。如果我将44013替换为工作表(“NavigationPage”).Range(“E12”).Value,则它不起作用。我不能简单地使用44013,因为我需要每天调整它 “E12”中的公式为 价值(日期(E10、E11,1)) 而“E10”和“E11”是用户手动填写的年份和月份。(如上图所示) 这应该是从“E12”获得的值有问题。但我不知道

如果“D”列下的日期小于2020年7月1日,我有以下代码删除行。当我将
设置为StartString7=44013
(值为1/7/2020)时,此代码工作正常。如果我将
44013
替换为
工作表(“NavigationPage”).Range(“E12”).Value
,则它不起作用。我不能简单地使用
44013
,因为我需要每天调整它

“E12”中的公式为 价值(日期(E10、E11,1))

而“E10”和“E11”是用户手动填写的年份和月份。(如上图所示)

这应该是从“E12”获得的值有问题。但我不知道如何修改它。非常感谢

请忽略工作表名称

Sub DeleteBeforeDate()

Dim c7 As Range, DeleteRange7 As Range, DataRange7 As Range
Dim LR7 As Long 'last row
Dim StartString7 As String

'change sheet name as required
With Worksheets("InPayments")
    'find last row in range
    LR7 = .Cells(.Rows.Count, "D").End(xlUp).Row

    'range you are searching
    Set DataRange7 = .Range("D2:D" & LR7)
End With

StartString7 = Worksheets("NavigationPage").Range("E12").Value
DataRange7.EntireRow.Hidden = False

For Each c7 In DataRange7.Cells
        If c7.Value < StartString7 Then
            If DeleteRange7 Is Nothing Then
                Set DeleteRange7 = c7
            Else
                Set DeleteRange7 = Union(DeleteRange7, c7)
            End If
        End If
    Next c7
    'delete all matched rows in one go
    If Not DeleteRange7 Is Nothing Then DeleteRange7.EntireRow.Delete

End Sub
Sub DeleteBeforeDate()
尺寸c7作为范围,删除范围7作为范围,数据范围7作为范围
尺寸LR7为最后一排的长度
暗启动字符串7作为字符串
'根据需要更改工作表名称
带工作表(“预付款”)
'查找范围中的最后一行
LR7=.Cells(.Rows.Count,“D”).End(xlUp).Row
'您正在搜索的范围
设置DataRange7=.Range(“D2:D”和LR7)
以
StartString7=工作表(“导航页面”).范围(“E12”).值
DataRange7.EntireRow.Hidden=False
对于DataRange7.单元格中的每个c7
如果c7.值<开始字符串7,则
如果DeleteRange7什么都不是,那么
设置DeleteRange7=c7
其他的
设置DeleteRange7=Union(DeleteRange7,c7)
如果结束
如果结束
下一个c7
'一次性删除所有匹配的行
如果Not DeleteRange7为Nothing,则DeleteRange7.EntireRow.Delete
端接头

它不应该是
暗启动字符串7吗?是的,你是对的@VBASIC208。谢谢。应该是
暗启动字符串7,只要
?是的,你是对的@vbasic208。谢谢