Excel VBA中文本字符串的日期格式

Excel VBA中文本字符串的日期格式,excel,date,vba,Excel,Date,Vba,我有一个日期格式的问题,我不能左右我的头 我有两个日期一个报告日期,用户输入格式为MM/DD/YYYY,在speadsheet上显示为2017年11月15日。这是来自一个用户表单的输入,该表单只要求输入月份和日期,但使用当前年份 然后我有一系列代码来验证数据行是否与ReportDate匹配并生成信息。要获取数据日期,我需要在文本字符串中查找单词PPP,并获取@符号前的数字 我分别获得了day和month值,因为在这个字符串中只有day/month可见,并且显示如下PPP@11/十五 下面是我的代

我有一个日期格式的问题,我不能左右我的头

我有两个日期一个报告日期,用户输入格式为MM/DD/YYYY,在speadsheet上显示为2017年11月15日。这是来自一个用户表单的输入,该表单只要求输入月份和日期,但使用当前年份

然后我有一系列代码来验证数据行是否与ReportDate匹配并生成信息。要获取数据日期,我需要在文本字符串中查找单词PPP,并获取@符号前的数字

我分别获得了day和month值,因为在这个字符串中只有day/month可见,并且显示如下PPP@11/十五

下面是我的代码摘录,但不是完整的脚本

Dim Year1 As Variant
Dim Month1 As Variant
Dim Day1 As Variant

If Not IsError(Mid(PODRng, InStr(1, PODRng, "PPP", vbTextCompare) + 4, 5)) Then                                                                                                        
Year1 = Format(Now(), "YYYY")
Month1 = Mid(PPPRng, InStr(1, PPPRng, "PPP", vbTextCompare) + 4, 2)
Day1 = Mid(PPPRng, InStr(1, PPPRng, "PPP", vbTextCompare) + 7, 2)
PPPTim = Day1 & "/" & Month1 & "/" & Year1
 'PPPTim.NumberFormat = "MM/DD/YYYY"

    If PPPTim = ReportDate Then


        Cell.Offset(0, 49).Value = PPPTim ' 
    ElseIf InStr(1, PODRng, "PPP", vbTextCompare) > 0 Then
        Cell.Offset(0, 49).Value = "Other Date"
    End If
如果结束

数据源大约是3k-5k行,我已经完成了代码,当它到达这个代码时,我就中断了。我可以在检查当地人时确认,PPPTim和ReportDate均显示为2017年11月15日,但匹配结果为假


希望有人能帮忙?

这就是你要找的吗

Dim podRNG为字符串,n1为整数,n2为整数,yourDate为日期

podRNG = "PPP@11/15"

n1 = InStr(podRNG, "@") + 1
n2 = InStr(podRNG, "/") + 1

PPPTim = CDate(Mid(podRNG, n1, n2 - n1 - 1) & "/" & Mid(podRNG, n2) & _
    "/" & Format(Now(), "YYYY"))
在我的系统上返回:

2017-11-15


…由于数据类型为日期,因此日期格式将根据您的区域设置而有所不同

完美我已经修改了输入日期的代码,使之具有CDate,它似乎正在工作。非常感谢。