我知道这个问题听起来有些混乱,但我遇到的问题是我有一个订单项数据库。我使用宏来过滤并将这些项目复制到某些部分。在一个部分,我现在没有数据库中的任何项目(可能将来但不确定)。我注意到这部分应该没有任何复制是复制数据库中的所有内容。我一步一步地运行宏来查看它是否正确过滤,数据库中没有显示任何内容,但由于某种原因,它会复制数据库中的每个项目。我不知道为什么会这样,但下面是我正在使用的代码。我假设有一个If语句,我可以把'选择正确的数据来复制代码,说如果数据库没有过滤任何东西,那么不要复制任何东西,但我不知道该怎么做。非常感谢任何帮助
'To filter data
'Sheets("Database").Select
'Range("A1").AutoFilter Field:=5, Criteria1:="2500", Operator:=xlOr, Criteria2:="All"
'Range("A1").AutoFilter Field:=6, Criteria1:="Adder"
'Range("A1").AutoFilter Field:=7, Criteria1:=Array("FL", "MF", "HF", "Furnace Eng", "Launder"), Operator:=xlFilterValues
'To select correct data to copy
'Dim I As Long
'I = Range("B" & Rows.Count).End(xlUp).Row
'Range("B2:B" & I).Copy
'To copy data
'Sheets("Quote Sheet").Select
'ActiveCell.Offset(1, 0).Select
'Selection.PasteSpecial Paste:=xlPasteValues
答案 0 :(得分:0)
要复制过滤后的数据,请使用此方法(未经测试)。我还使用上面代码中的第3个自动过滤器示例来演示.Offset
Dim Dim copyFrom As Range
'~~> I am assuming that the Headers are in Row 1
'~~> Filter, offset(to exclude headers) and set the filtered range
With .Range("A1")
.AutoFilter Field:=7, Criteria1:=Array("FL", "MF", "HF", "Furnace Eng", "Launder"), _
Operator:=xlFilterValues
Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
If Not copyfrom Is Nothing Then
copyfrom.Copy '<~~ Copy the range
End If
答案 1 :(得分:0)
我会检查你的情况:
If Range("B1").CurrentRegion.Rows.Count >1 Then