當我不希望它為真時,Excel isDate 回傳真。
例如
isDate(DateSerial(Month:=6, Day:=40, Year:=1970))
回傳真
并輸入
DateSerial(Month:=6, Day:=40, Year:=1970))
作為單元格中的值導致
1970 年 10 月 7 日
我想要的是用戶不能進入 6 月 72 日,而是將他限制為“真實日期”。我不希望 Excel 補償它。
有辦法嗎?
uj5u.com熱心網友回復:
dateSerial 函式就是這樣實作的——如果你想添加天數或月數,它會很方便。
您可以做的是撰寫自己的檢查例程,獲取日、月和年作為引數,將其作為引數傳遞給DateSerial并檢查日、月和年是否等于您傳遞的引數值。
Function checkValidDate(dd As Long, mm As Long, yyyy As Long) As Boolean
Dim tmpDate As Date
On Error Resume Next
tmpDate = DateSerial(yyyy, mm, dd)
If Err.Number > 0 Then Exit Function
On Error GoTo 0
checkValidDate = (Day(tmpDate) = dd And Month(tmpDate) = mm And Year(tmpDate) = yyyy)
End Function
? checkValidDate(0, 0, 0)
False
? checkValidDate(10, 7, 1970)
True
? checkValidDate(40, 6, 1970)
False
uj5u.com熱心網友回復:
提取并決議文本日期并使用IsDate:
PersonNummer = "1111010170"
If IsDate(Format(Right(PersonNummer, 6), "@@\/@@\/@@")) Then
Debug.Print "OK"
Else
Debug.Print "Not OK"
End If
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529610.html
標籤:擅长vba
上一篇:洗掉公式中的括號
