【发布时间】:2020-01-08 19:10:12
【问题描述】:
我有一个 Excel 表,它从数据库加载数据,然后使用 CopyFromRecordset VBA 命令将其放入 Excel 表中。我的问题是,无论我做什么,许多单元格(应该是整数)都会被格式化为日期。我已将 Excel 中的数字格式更改为数字,但每当我从数据库中重新加载数据时,格式就会切换回日期。
数据库中的数据类型是整数,但是,当我从数据库中加载数据时,Excel 仍然将单元格格式更改为日期。即使最终用户在加载数据后在单元格中输入整数,excel 也会将其更改为日期。例如,如果我在单元格中输入 5,excel 会将其更改为 1/5/1900。
为什么 Excel 会继续将这些单元格更改为日期,即使在格式下拉列表更改为其他内容之后?
我尝试过的事情:
将格式从日期更改为数字、常规和文本。它恢复为 CopyFromRecordset 上的日期
删除列并创建一个格式化为数字的新列。它仍然在 CopyFromRecordset 上恢复
在 select 语句中将数据类型转换为整数
还有其他想法吗?
从数据库加载数据的 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 列被格式化为日期。几天来,我一直在为此苦苦思索,所以任何想法将不胜感激:)
【问题讨论】:
标签: excel vba date-formatting