我很难将日期从 dd-mm-yyyy 格式转换为 dd/mm/yyyy 格式。
例如,当我在 excel 中输入日期为 25/02/2012 (dd/mm/yyyy) 时,如果在下一行输入日期后,它会将日期转换为 25-02-2012 (dd-mm- yyyy) 格式。
我想要做的是,当我在 excel 中以 (dd/mm/yyyy) 格式输入日期时,它应该保持原样,并且在我下一次时不应该将其更改回 (dd-mm-yyyy) 格式细胞。
当我输入我的日期作为当前系统日期时,我的代码给了我一个错误,我无法验证日期,即输入的日期是否为有效日期
Sub valid_date()
' ---------------------------------------------------------------------
' Final Code - Trial
' ---------------------------------------------------------------------
Dim d1 As Variant
Dim IssueDate As Variant
Dim str As Variant
d1 = Worksheets("Sheet1").Cells(6, 1).value
MsgBox " The Issue Date format is " & d1
sysdate = Date
MsgBox "System Date is " & sysdate
If IsDateValid(d1) Then ' if date is in dd/mm/yyyy format then print this
If (d1 > sysdate) Then
MsgBox "Invalid date"
End If
End If
End Sub
Function IsDateValid(pdate) As Boolean
IsDateValid = False
Set RegExp = CreateObject("VBScript.RegExp")
' it only matches whether date is in dd/mm/yyyy format or not
'
' [1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1] ---> it allows the DATE from 01 to 31
' [1-9]|0[1-9]|1[0-2] ---> it allows the MONTH from 01 to 12
' 1[9][0-9][0-9]|2[0][0-9][0-9] ---> it allows the YEAR from 1900 to 2099
'
' below is the regular expression for checking the date in dd/mm/yyyy format
RegExp.Pattern = "^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])[/]([1-9]|0[1-9]|1[0-2])[/](1[9][0-9][0-9]|2[0][0-9][0-9])$"
' check whether the date is in dd/mm/yyyy format or not....
tempdate = RegExp.Test(pdate)
If tempdate Then ' if tempdate is in dd/mm/yyyy format than proceed further
'If isdate(tempdate) Then ' if date is a valid date then proceed further
If isdate(pdate) Then
IsDateValid = True
Else
IsDateValid = False
End If
Else
IsDateValid = False
End If
End Function
我正在使用上述代码通过使用正则表达式来检查日期是否为 dd/mm/yyyy 格式
但我面临的问题是,每当我以 dd/mm/yyyy 格式输入日期时,它将 Excel 中的日期作为 dd-mm-yyyy 格式。
我已经稍微更新了我的代码,当我输入我的日期作为当前系统日期时,我还需要更多帮助,这给了我错误
例如,当我输入我的日期为 09/09/2012(假设这是您当前的系统日期)并且当我使用 IsDate 方法检查此日期时,它给了我一个错误
我再次编辑了我的代码,
谁能帮我解决这个问题