空白字段复制为#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值在拷贝过程中,甚至在事后清除它们?

任何其他如何处理这个问题的build议也将会非常令人满意,因为我不是一个VBA的开发者,而是一个幸运的灵魂,当唯一有Excel和VBA经验的人离开我们的团队的时候,这个幸运的灵魂就会select这个。 提前致谢!

当范围不是相同的大小时,问题来了。 你应该适当resize:

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

首先使用以下命令清除目标表单可能更安全:

 ThisWorkbook.Sheets(strTarget).UsedRange.ClearContents