Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果没有可复制的内容,如何使If语句不复制_Excel_Vba - Fatal编程技术网

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

Excel 如果没有可复制的内容,如何使If语句不复制,excel,vba,Excel,Vba,我知道这个问题听起来有点混乱,但我遇到的问题是我有一个行项目的数据库。我使用宏将这些项目过滤并复制到某些部分。在一个部分中,到目前为止,我在数据库中没有任何项目(将来可能会有,但不确定)。我注意到这个不应该有任何内容的部分正在复制数据库中的所有内容。我一步一步地运行宏,查看它是否正确过滤,数据库中没有显示任何内容,但出于某种原因,它会复制数据库中的每个项目。我不确定它为什么会这样做,但下面是我正在使用的代码。我假设有一个If语句可以放在“选择正确的数据以复制代码”上,表示如果数据库没有过滤任何内

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

要复制过滤后的数据,请使用此方法(未经测试)。我还使用上面代码中的第三个自动筛选示例来演示
.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
Dim copyFrom As范围
“~~>我假设标题在第1行
“~~>筛选、偏移(以排除标题)并设置筛选范围
带.Range(“A1”)
.自动过滤字段:=7,标准1:=数组(“FL”、“MF”、“HF”、“熔炉工程”、“流槽”)_
运算符:=xlFilterValues
设置copyFrom=.Offset(1,0).SpecialCells(xlCellTypeVisible).EntireRow
以
如果不是copyfrom,那就什么都不是了

copyfrom.Copy'我只想了解一下您的情况:

If Range("B1").CurrentRegion.Rows.Count >1 Then