如果像该问题时,你只在排除#REF!
错误,这是正确的校验感兴趣:
For Each akt_range In Range("C3:J65")
If CStr(akt_range.Value2) <> CStr(CVErr(xlErrRef)) Then
akt_range.Value = akt_range.Value2
End If
Next
技术上,上述将在返回#REF!
的错误代码字符串的公式的特殊情况下失败,例如="Error 2023"
。该绝对防弹检查是这样的:
For Each akt_range In Range("C3:J65")
If Not IsError(akt_range.Value2) Or CStr(akt_range.Value2) <> CStr(CVErr(xlErrRef)) Then
akt_range.Value = akt_range.Value2
End If
Next
如果要排除所有错误,一个更好的解决办法是使用.SpecialCells()
循环之前,以消除该范围的错误:
For Each akt_range In Range("C3:J65").SpecialCells(xlCellTypeFormulas, xlLogical + xlNumbers + xlTextValues)
akt_range.Value = akt_range.Value2
Next
'Selection.Areas'列举区域。区域的“价值”是一个二维数组。显然你想'Selection.Cells'。然后再次,[你不需要'选择'](https://stackoverflow.com/q/10714251/11683)。 – GSerg