空白字段复制为#N / A.

时间:2015-02-23 16:38:35

标签: excel vba excel-vba excel-2003

我正在使用Excel 2003 VBA脚本,该脚本将外部Excel文件中工作表中的内容复制到我们自己的工作表中:

ThisWorkbook.Sheets(strTarget).UsedRange.Value = Workbooks(strFile).Sheets(strSource).UsedRange.Value

在大量空白单元格中,此函数发布#N / A而不是空白值,这会导致VBA代码中的错误进一步下降。这仅在某些工作表上发生,而其他工作表复制得很好,有时通过在额外的行中添加这些值,在其他列中添加其他时间。我试图用IsNA清除错误无济于事:

If (IsNA(Workbooks(strFile).Sheets(strSource).UsedRange.Value)) Then
        ThisWorkbook.Sheets(strTarget).UsedRange.Value = ""
    Else: ThisWorkbook.Sheets(strTarget).UsedRange.Value = Workbooks(strFile).Sheets(strSource).UsedRange.Value

是否有一种简单的方法可以在复制过程中删除这些#N / A值,甚至可以在事后清除它们?

关于如何处理这个问题的任何其他建议也会受到极大的关注,因为我自己不是VBA开发者,而只是当唯一一个拥有Excel和VBA经验的人离开我们的时候,这个幸运的灵魂会选择这个球队。提前谢谢!

1 个答案:

答案 0 :(得分:1)

当范围不同时会出现问题。你应该适当调整大小:

With Workbooks(strFile).Sheets(strSource).UsedRange
    ThisWorkbook.Sheets(strTarget).UsedRange.Resize(.Rows.count, .Columns.count).Value = .Value
End With

首先使用以下方法清除目标表格可能更安全:

ThisWorkbook.Sheets(strTarget).UsedRange.ClearContents