![](/img/trans.png)
[英]Hide rows in a worksheet based on a cell value in different worksheet using 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.