我在工作表中有一列包含未格式化的日期值。共有三种类型,始终以月份缩写开头:
JAN/19
JAN02/19
JAN19
我正在编写一个宏来循环遍历该列并将其格式化为日期。 JAN/19
和 JAN19
都将设置为该月的第一天,而 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
消息。
最佳答案
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/