excel - 如何在函数值而不是单元格值上使用 IsError?

标签 excel vba

我在工作表中有一列包含未格式化的日期值。共有三种类型,始终以月份缩写开头:

JAN/19
JAN02/19
JAN19

我正在编写一个宏来循环遍历该列并将其格式化为日期。 JAN/19JAN19 都将设置为该月的第一天,而 JAN02/19 将设置为 2019 年 1 月 2 日

为了对列标题和顶部潜在的空白行进行错误处理,我想取出左边的三个字符,看看它们是否是月份缩写。我正在尝试使用以下代码:

If IsError(DateValue("01 " & Left(Cells(1, 1), 3) & " 19")) = True Then

     MsgBox "Oops, " & Left(Cells(1, 1), 3) & " is not a valid month abbreviation"

End If

如果 Left(Cells(1, 1), 3) 是有效的月份缩写,它会跳过消息框,但如果不是,则会给出此错误,而不是 MsgBox 消息。

enter image description here

最佳答案

IsDate() 是一个相当方便的函数,它应该按预期工作:

Sub TestMe()

    If IsDate("01 " & Left(Cells(1, 1), 3) & " 19") Then
        Debug.Print "It is a date!"
    Else
        Debug.Print "Oops, " & Left(Cells(1, 1), 3) & " is not a valid month abbreviation"
    End If

End Sub

关于excel - 如何在函数值而不是单元格值上使用 IsError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56154055/

相关文章:

excel - 从 Excel/VBA 调用 Scala 函数

vba - 使用表单从网站屏幕获取数据到 Excel - VBA

excel - 查找单个项目总计的公式 Excel

javascript - 通过ajax方法调用函数时未下载Excel文件

vba - 单击按钮时识别更改的单元格

vba - 如何从VBA向命令窗口写入消息?

excel - 我需要 Excel VBA 代码来复制粘贴一系列单元格

Excel比较2个工作簿,将它们合并然后比较

excel - 识别 SUMIF 函数的 NULL 结果

vba - 日期之间的查找检查