VBA日期显示为数字

时间:2017-08-18 07:28:42

标签: vba excel-vba excel

我是VBA的新手,我需要从数据库中获取一些行。 问题是,第一次选择时的日期以dd.mm.yyyy格式显示,但在一段时间后,日期显示为整数,如42814或类似的东西。

以下是2张图片,以便更好地理解

Image1 Image2

这里是代码

Application.CutCopyMode = False
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=OpsApps;UID=Alligatoah;Trusted_Connection=Yes;APP=Microsoft Office 2016;WSID=AT000616;DATABASE=OpsApps" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandText = Array( _
        "SELECT TV.Customer, TV.KNUM, TV.DMRF, TV.BoM, TV.Costs, TV.PlnLaunch, TV.Date, TV" _
        , _
        "_.ActualCosts" & Chr(13) & "" & Chr(10) & "FROM OpsApps.dbo.TV TV" & Chr(13) & "" & Chr(10) & "WHERE (TV.SystemMCSDate>={ts '2017-01-01 00:00:00'})" _
        )
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_VillachOpsApps"
        .Refresh BackgroundQuery:=False
    End With

有人可以帮忙吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您想要设置范围的NumberFormat属性

例如,如果我在单元格中有18/08/17,然后在Excel功能区中手动将其NumberFormat转换为“常规”,我们会看到42965。您可以使用如下字符串在VBA中指定此格式:

' Use your column here, could also use a table range
ThisWorkbook.Sheets("MySheet").Columns("F").NumberFormat = "dd.mm.yyyy"