如果错误然后空白

Rya*_*yan 1 excel vba excel-vba

谢谢你看看我的问题.知道我是stackoverflow和VBA的新手我有一个很长的宏,我一直在努力.在宏中的一点,我必须将"开始深度"(L)和"结束深度"(M)从"m"转换为"ft".然后我减去两个以找到"素材"(N).但是,列中的某些值最初保留为空白.所以,在进行了我的转换和减法后,我留下了"#VALUE!" 这是后来在宏中给我的错误.最初我在转换和减法之前将所有空白更改为0.但是,在"完成"宏之后,我意识到零正在弄乱呈现数据.所以,我只想进行转换和减法,然后更改所有"#VALUES!" 回到空白.我发现了一些这方面的东西,但我无法(我知道)使用或特定于我:http: //www.ozgrid.com/forum/showthread.php ?t = 60740https://superuser.com /问题/ 715744/EXCEL-2010-配方怎么办-我-写这个配方,VBA

这是我用来将空格改为0的方法

Worksheet1.Select
lastrow = Range("A666666").End(xlUp).Row
For Each cell In Range("A1:Q" & lastrow)
    If Len(cell.Value) = 0 Then
        cell.Value = 0
    End If
Next
Run Code Online (Sandbox Code Playgroud)

这是导致错误的代码.注意:数据以空格开头,使用这些公式后,我会收到错误,因为一些原始单元格以null或空格开头.此外,这些行不是这个顺序,但它们是留下错误的行.

ActiveCell.FormulaR1C1 = "=CONVERT(RC[2],""m"",""ft"")"
Selection.AutoFill Destination:=Range("N2:O2"), Type:=xlFillDefault
Selection.AutoFill Destination:=Range("N2:O" & lastrow)
Range("N1") = "Footage"
Range("N2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]"
Selection.AutoFill Destination:=Range("N2:N" & lastrow)
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.多谢你们!

And*_*ASM 5

这取决于#VALUE!是从公式还是从VBA代码生成.

如果它是从公式生成的,请将公式包装在IFERROR函数中.我相信这是在Excel 2007中添加的.例如,如果你的公式是:

=A1-B1
Run Code Online (Sandbox Code Playgroud)

然后你可以把

=IFERROR(A1-B1,"")
Run Code Online (Sandbox Code Playgroud)

这就是说,如果A1-B1是错误,则返回"",否则返回A1-B1的结果.

VBA

如果该值是由VBA生成的,那么您可以编写一个与IFERROR类似的辅助函数

Public Function MyIfError(value As Variant, value_if_error As Variant)
 If IsError(value) Then
    MyIfError = value_if_error
 Else
   MyIfError = value
 End If
End Function
Run Code Online (Sandbox Code Playgroud)

然后通过它传递你的价值.