首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CDATE VBA发布12:00上午而不是日期

CDATE VBA发布12:00上午而不是日期
EN

Stack Overflow用户
提问于 2022-04-26 13:38:36
回答 1查看 164关注 0票数 0

我试图将我的单元格的日期格式转换为csv格式--它们以csv格式传递,显示日期,而excel不承认它为日期(它将"Standard“显示为格式,日期在左侧对齐,因此excel中没有日期)。

代码语言:javascript
运行
复制
    Dim lr11 As Integer
    Dim dates11 As Date
    
    lr11 = WS1.Cells(WS1.Rows.Count, "C").End(xlUp).row

    For dates11 = 2 To lr11
        WS1.Cells(dates11, 3).Value = CDate(Cells(dates11, 3).Value)
    Next dates11

上面的代码有时在Test ()中工作,但是当在我的主Sub中使用时,我总是在所有单元格中得到“12:00 AM”而不是日期。

我做错了什么?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-04-26 13:55:28

如果字符串的格式类似于DD.MM.YYYY格式的日期,则可以拆分它们并使用DateSerial创建数字日期,如下所示:

代码语言:javascript
运行
复制
Option Explicit

Public Function ConvertStringDDMMYYYYtoDate(ByVal InputString As String) As Date
    Dim RetVal As Date
    
    Dim Parts() As String
    Parts = Split(InputString, ".")
    
    If UBound(Parts) = 2 Then
        
        RetVal = DateSerial(Parts(2), Parts(1), Parts(0))
        If Not Format$(RetVal, "DD.MM.YYYY") = InputString Then
            MsgBox "Input String is not a real date", vbCritical
            RetVal = 0
        End If
    End If
    
    ConvertStringDDMMYYYYtoDate = RetVal
End Function

然后用它就像

代码语言:javascript
运行
复制
For dates11 = 2 To lr11
    WS1.Cells(dates11, 3).Value = ConvertStringDDMMYYYYtoDate(WS1.Cells(dates11, 3).Value)
    WS1.Cells(dates11, 3).NumberFormat = "DD.MM.YYYY"  ' format it however you like it to look like
Next dates11
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72014976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档