空白字段复制为#N/A

Blank Fields Copied as #N/A

我正在使用 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 经验离开了我们的团队。提前致谢!

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

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

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

ThisWorkbook.Sheets(strTarget).UsedRange.ClearContents