首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel 2007 VBA Autofiltr: Select Case IsEmpty与Copying

Excel 2007 VBA Autofiltr: Select Case IsEmpty与Copying
EN

Stack Overflow用户
提问于 2015-02-18 20:58:27
回答 1查看 140关注 0票数 0

我正在与我的宏作斗争。

目标和主要思想:它打开不同的xls文件,基于自动筛选,它检查第10列,以选择具有四个“最后-星期五-天”的行(因此,如果我们有18/02,它将返回13/02,06/02,30/01,23/01)。

问题:问题是只有当我的文件中没有像aboves.Even这样的日期时,虽然文件应该自动关闭,但它试图复制空范围!!我使用Select Case (代码如下)

代码:

代码语言:javascript
复制
 Rows("4:4").Select '*Autofilter - this part is ok*
 Selection.AutoFilter *' four last-Fridays from the Column - ok*
 ActiveSheet.Range("J5", Range("J5").End(xlDown)).AutoFilter Field:=10, Criteria1:=Array( _
    LastFridayDate, Friday2weeksagoDate, Friday3weeksagoDate, Friday4weeksagoDate), Operator:= _
       xlFilterValues

Range("A4").Offset(1, 0).Activate
  Select Case IsEmpty(ActiveCell) ' *MISTAKE!!* 
    Case True MISTAKE!! *no data in file, file should be closed!*
        Workbooks("prima UKACZEE.xls").Close SaveChanges:=False
    Case Else ' *this part always works*
        Range("A5", Range("A5").End(xlDown).End(xlToRight)).Select
        Selection.Copy
        Workbooks("Makro XXX Claim Hours v.01.xls").Sheets("TRN Claim Report - Labour").Activate
        Range("A5").End(xlDown).Offset(1, 0).Activate
        ActiveSheet.Paste

    Application.DisplayAlerts = False *' closing file - ok*
    Workbooks("prima UKACZEE.xls").Close SaveChanges:=False
    Application.DisplayAlerts = True
End Select

如果你能帮忙的话。欣赏

EN

回答 1

Stack Overflow用户

发布于 2015-02-18 22:28:50

这里的问题是,AutoFilter不会使行不存在,它只是将它们隐藏起来。无论是否应用了过滤器,Range("A4").Offset(1,0)都将始终引用单元格A5,因此如果A5中有值,那么IsEmpty(ActiveCell)将始终返回false。

要解决这个问题,您必须使用Range对象的SpecialCells方法。下面的代码将激活列A中位于单元格A4下的第一个可见单元格,在本例中是过滤后的第一行结果。

代码语言:javascript
复制
Range("A5:A" & ActiveSheet.Rows.Count).SpecialCells(xlCellTypeVisible).Cells(1, 1).Activate
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28584261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档