1

我知道这个问题听起来有点令人困惑,但我遇到的问题是我有一个订单项数据库。我使用宏来过滤这些项目并将其复制到某些部分。在一个部分中,到目前为止,我在数据库中没有任何项目(将来可能会,但不确定)。我注意到本不应该复制任何内容的部分正在复制数据库中的所有内容。我一步一步地运行宏,看到它正确过滤,数据库中没有任何显示,但由于某种原因,它复制了数据库中的每个项目。我不确定它为什么这样做,但下面是我正在使用的代码。我假设有一个 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
4

2 回答 2

0

要复制过滤后的数据,请使用此方法(未经测试)。我还使用上面代码中的第三个自动过滤器示例来演示.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
于 2013-03-27T15:16:12.437 回答
0

我只是检查你的情况:

If Range("B1").CurrentRegion.Rows.Count >1 Then
于 2013-03-27T15:21:03.463 回答