#VALUE自定义函数错误

时间:2015-02-26 21:05:04

标签: excel vba excel-vba excel-2007 excel-udf

Function HasStrike(Rng as Range) As Boolean
HasStrike = Rng.Font.Strikethrough
End Function

我正在使用自定义函数来查看列是否有删除线。如果列有删除线,它返回一个布尔值,我删除该行。但是,我收到了#VALUE错误。我正在检查的列中只有“MASS”字样。不知道发生了什么。

User Screenshot

1 个答案:

答案 0 :(得分:0)

如果单元格内容具有混合格式,则您的函数将返回#VALUE:某些文本被删除而某些文本未被删除。

选择一个“问题”输入单元格并转到“格式化单元格”>>字体选项卡。 “Strikethrough”是否已经过检查或者看起来像下面的样子?这表示混合格式。

enter image description here

尝试这个:

Function HasStrike(Rng As Range) As Boolean
    Dim v
    Application.Volatile '<< EDIT: added this
    On Error Resume Next
    v = Rng.Font.Strikethrough
    On Error GoTo 0
    HasStrike = v Or IsNull(v)
End Function