如果没有要复制的内容,如何使If语句不复制

时间:2013-03-27 14:47:47

标签: excel excel-vba vba

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

2 个答案:

答案 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