删除.activate和.select时出现值错误

时间:2018-04-16 17:16:24

标签: excel vba

我有一个宏来过滤大型工作簿中的某些数据,然后将其粘贴到仅包含该类数据的工作簿中。最初,我使用.select和.activate编写代码,但从那时起就试图摆脱它。

以下是使用.select

的代码
    Workbooks(DataFileName).Sheets(twttgtdata).Activate
    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Workbooks(ShopFileName).Sheets(twttgt).Activate
    Range("A2").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False

以下是执行相同操作的代码的优化版本。

        With Workbooks(DataFileName).Sheets(twttgtdata)
            On Error Resume Next
          .ShowAllData
          Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible).Copy _
            Destination:= Workbooks(ShopFileName).Sheets(twttgt).Cells(Workbooks(ShopFileName).Sheets(twttgt).Rows.Count, "A").End(xlUp).Offset(1, 0)
        End With
        Application.CutCopyMode = False

据我所知,这两个代码块执行完全相同的任务。但是,在使用后一个代码时,它会使工作簿中的一组公式出现#value错误。前者没有。我已经彻底调查了,几乎可以肯定它与格式或数字类型无关。我错过了什么?相交是否比我理解的更多?

如果有帮助,可以提供更多信息。不知道还有什么可以做的来诊断这个。

0 个答案:

没有答案