2014-11-21 105 views
0

我用这样的代码:Range.AutoFilter方法(Excel)中

Sheets("1").Select 
Range("A1:Z100").Select 
Selection.Autofilter 
Worksheets("Sheet1").Range("$A$1:$Z$100").AutoFilter field:=1, Criteria1:=String1 
Worksheets("Sheet1").Range("$A$1:$Z$100").AutoFilter field:=2, Criteria1:=String2 
Range("A1:Z100").Select 
Selection.Copy 
Sheets("2").Select 
Range("A1").Select 
ActiveSheet.Paste 

(其中字符串1和字符串的含义)

我用这个代码在循环中,它的作品最的时间。然而,有时它不会...

当没有符合两个标准的结果时,它会在粘贴时向我提供过滤范围内的所有内容,而不是粘贴空单元格,如我所愿。

真正令人讨厌的部分是,我在另一个电子表格中有或多或少完全相同的代码,就像这样 - 当没有查询命中时,什么也不给我。

+0

我已经计算出我自己的问题 - 在这个范围。(‘A1:G100’)选择注释之前的.autofilter是问题。 用(“A1:G1”)代替(“A1:G100”)可以产生所需的行为。 – user4279226 2014-11-27 14:56:20

回答

0

'删除“$”标志后试试看。

Sheets("1").Select 
Range("A1:Z100").Select 
Selection.Autofilter 
Worksheets("Sheet1").Range("A1:Z100").AutoFilter field:=1, Criteria1:=String1 
Worksheets("Sheet1").Range("A1:Z100").AutoFilter field:=2, Criteria1:=String2 

Range("A1:Z100").SpecialCells(xlCellTypeVisible).Select 

Selection.Copy 
Sheets("2").Select 
Range("A1").Select 
ActiveSheet.Paste 

'U必须复制的细胞,其是可见