我正在使用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/01/1900
导致此重新格式化的原因是什么?