繁体   English   中英

Excel VBA如何根据不同工作表中单元格的值删除行

[英]Excel VBA How to delete rows based on the value of a cell in a different worksheet

我正在尝试创建一个宏,该宏将基于多个条件自动从原始数据文件中删除行。 我已经能够创建一个宏,该宏将删除某些列为空值的行,但是我还需要删除日期等于或大于另一个工作表中特定单元格中包含的日期的行。 我到过互联网,但是没有找到一种解释可以解决这种特殊情况或足够类似的一种解释。 我正在努力使许多其他报告自动化,这是我需要能够完成其中一些报告的最后一部分。 这是我尝试使用的代码。

 Sub Deletedatesbeyondreportmonth()

 Application.ScreenUpdating = False

 With ActiveSheet

    .AutoFilterMode = False

    .Columns("E").AutoFilter Field:=1, Criteria1:=">= sheets("Sheet2").Range("C1")"

    .AutoFilter.Range.Offset(1, 0).EntireRow.Delete

    .AutoFilterMode = False

End With

End Sub

如果我用包含在指定单元格中的实际值替换条件sheets("Sheet2").Range("C1") ,宏将起作用,但是我需要它能够基于该单元格中包含的值运行。 我玩过一些语法变体,并收到了不同的错误消息,但是还无法弄清楚。 如果按原样运行,它将在条件行上突出显示单词Sheet2并说:

预期的编译错误:语句结束

可能是嵌套的双引号。 尝试使用双双引号,例如:

.Columns("E").AutoFilter Field:=1, Criteria1:=">= sheets(""Sheet2"").Range(""C1"")"

这里的例子。

当用引号将VBA逻辑封装起来时,实际上是对该字符串进行硬编码,因此它将在过滤器中使用文本Sheets("Sheet2").Range("C1")而不是计算Range值。 您需要使用以下内容:

.Columns("E").AutoFilter Field:=1, Criteria1:=">=" & Sheets("Sheet2").Range("C1")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM