为什么ADODB.RecordSet中的整数在写入Excel电子表格时会转换为Date

时间:2015-01-08 15:41:11

标签: excel excel-vba vba

我正在使用Excel 2010。

使用VBA我从MySQL数据库填充ADODB.RecordSet,然后将RecordSet的结果写入workSheet中的一系列单元格。工作表中的所有单元格都使用“常规”格式。

在Recordset中有两个类型为Integer的字段。

当写入工作表时,如果我只包含起始单元格(如下面的代码所示),一切都按预期工作,所有整数值都正确写入工作表。

从数据库读取并写入工作表的代码在此处:

SqlString = "SELECT * FROM ......"

Set Connection = New ADODB.Connection
Connection.Open ConnectionString

Set Recordset = New ADODB.Recordset
With Recordset
    .CursorLocation = adUseClient
    .CursorType = adOpenForwardOnly
    .LockType = adLockBatchOptimistic
    .Open SQLString, Connection
    .ActiveConnection = Nothing
End With

With Sheet11
    .Range("AD33:AM47").Clear
    .Range("AD33").CopyFromRecordset Recordset
End With

但是,如果在将Recordset写入工作表时包含完整范围,则包含整数值的单元格的格式将转换为Date,即使我专门设置宏中的单元格格式也是如此。 这种情况下的代码是:

[...]
With Sheet11
    .Range("AD33:AM47").Clear
    .Range("AG33:AG47").NumberFormat = "General"
    .Range("AI33:AI47").NumberFormat = "General"
    .Range("AD33:AM47").CopyFromRecordset Recordset
End With

这导致日期'01 / 01/1900'+在工作表的单元格中显示的实际整数,我希望看到整数。

例如:

  • 整数= 10
  • 格式化的单元格包含10/01/1900

导致此重新格式化的原因是什么?

0 个答案:

没有答案