检查过滤后的数据是否有一行可见的单元格,如果找不到数据,请移至下一页并在此处检查

时间:2019-06-06 19:18:16

标签: excel vba if-statement

我是VBA的新手,所以可能会有一个明显的答案,但是我盯着这段代码看了好几个小时,无法弄清楚。

我正在使用两台机器测试的数百个样本上进行数据分析,因此零件的序列号被分为两个不同的数据库(导入到两个不同的工作表中。)我想过滤机器1的数据库使用序列号,如果没有结果,请尝试通过Machine 2数据库进行过滤。

我尝试使用if语句和autofilter命令检查第一张工作表,如果没有可见的单元格,则移至第二张工作表。

'Check for Visible Cells and Copy in Machine 1
If Cells.SpecialCells(xlCellTypeVisible).Rows.Count = 1 Then
     Cells.Select
     Selection.SpecialCells(xlCellTypeVisible).Select
     Selection.Copy
     Sheets("Copy Sheet").Range("$A$1").PasteSpecial Paste:=xlPasteValues

'Designate Sheet

     BoreData = "Bore Data M1"

ElseIf Cells.SpecialCells(xlCellTypeVisible).Rows.Count < 1 Then

'Check for Visible Cells and Copy in Machine 2
     Sheets("Block Data M2").Activate
     Range("$A$1:$J$1").AutoFilter Field:=2, Criteria1:=SerialLHA & "RR"
     Cells.Select
     Selection.SpecialCells(xlCellTypeVisible).Select
     Selection.Copy
     Sheets("Copy Sheet").Range("$A$1").PasteSpecial Paste:=xlPasteValues

'Designate Sheet      
      BoreData = "Bore Data M2"

End If

没有错误消息,但是如果Machine 1 Sheet中没有过滤的数据,它仍将复制标题行,并且永远不会移至Machine 2 Sheet。

我还尝试了如果Cells.SpecialCells(xlCellTypeVisible).Rows.Count = 1,Elseif Cells.SpecialCells(xlCellTypeVisible).Rows.Count <> 1,然后...,这将导致相同的情况。

0 个答案:

没有答案