CopyFromRecordset 错误地将单元格格式设置为日期?

CopyFromRecordset incorrectly formats cells as Date?

我有一个 excel sheet 从数据库加载数据,然后使用 CopyFromRecordset VBA 命令将其放入 Excel Table。我的问题是,无论我做什么,许多单元格(应该是整数)一直被格式化为日期。我已将 Excel 中的数字格式更改为数字,但每当我从数据库中重新加载数据时,格式都会切换回日期。

数据库中的数据类型是整数,然而,当我从数据库加载数据时,Excel仍然将单元格格式更改为日期。即使最终用户在加载数据后在单元格中输入整数,excel 也会将其更改为日期。例如,如果我在单元格中输入 5,excel 会将其更改为 1/5/1900。

为什么 Excel 会继续将这些单元格更改为日期,即使在格式下拉列表更改为其他内容之后也是如此?

我尝试过的事情:

还有其他想法吗?

从数据库加载数据的 VBA 代码的一部分:

SQLStr = "Select ......, [SO] FROM v_TRACKING"
Set Cn = New ADODB.Connection
Cn.Open "Driver={SQL Server Native Client 11.0};Server=" & Server_Name & ";Database=" & Database_Name & ";Trusted_connection=yes;"
rs.Open SQLStr, Cn, adOpenStatic

dataRange = "a13:az" & (rs.RecordCount + 12)

With ActiveSheet.Range(dataRange)
    .ClearContents
    .CopyFromRecordset rs
End With

所有其他列的格式保持正确,但出于某种原因,SO 列被格式化为日期。几天来我一直在为这个问题苦思冥想,所以 任何 的想法将不胜感激:)

一个单元格足以让 Range 以数字格式格式化该列。

DataRange = "a13"
With ActiveSheet.Range(DataRange)
    With ActiveSheet.Range(DataRange).CurrentRegion
        .ClearContents
        .CurrentRegion.Columns("SO").NumberFormatLocal = "0_ "
    End With
    .CopyFromRecordset rs
End With

我以前遇到过这个问题;它可以通过使用单元格 属性 的范围来解决:

With ActiveSheet.Range(dataRange)
    .ClearContents
    .Cells(1,1).CopyFromRecordset rs
End With