Excel时间格式自动更改问题

我目前正在处理一个Excel应用程序,它可以从我的表单工作表中获取信息并将其显示到显示工作表中。 到目前为止,数据可以完美传递,除了一个小小的怪癖。

当单击“执行”时,“显示”工作表将显示数据。
这是截图: 这是截图。

在执行显示之前,表单工作表中的时间字段被格式化为h:mm AM / PM。 但是,当单击“显示工作表”中的“执行”时,时间格式在表单工作表中突然发生变化,如下所示: 如这里所见。

此外,在显示表中也可以看到格式的变化。 我试图设置两个工作表的格式是相同的,结果仍然是相同的。

是一般的SQL1语句还是编码的问题? 这里是代码示例。

Public Sub QueryWorksheet(szSQL As String, rgStart As Range, wbWorkBook As String, AB As String) Dim rsData As ADODB.Recordset Dim szConnect As String On Error GoTo ErrHandler If AB = "1st" Then wbWorkBook = ActiveWorkbook.Sheets("Inner Workings").Range("B9").Text End If Application.StatusBar = "Retrieving data ....." 'Set up the connection string to excel - thisworkbook szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & wbWorkBook & ";" & _ "Extended Properties=Excel 8.0;" Set rsData = New ADODB.Recordset 'Run the query as adCmdText rsData.Open szSQL, szConnect, adOpenForwardOnly, adLockReadOnly, adCmdText 'Check if data is returned If Not rsData.EOF Then 'if the recordset contains data put them on the worksheet rgStart.CopyFromRecordset rsData Else End If 'Close connection rsData.Close 'Clean up and get out Set rsData = Nothing Application.StatusBar = False Exit Sub ErrHandler: 'an error occured in the SQL-statement MsgBox "Your query could not be executed, the SQL-statement is incorrect." Set rsData = Nothing Application.StatusBar = False End Sub Sub process() Call clear Call testsql("1st") ' populate 1st Summary Call testsql("2nd") ' find Date+Time Call testsql("3rd") ' GET LATEST RECORD End Sub Sub testsql(AB As String) Dim rgPlaceOutput As Range 'first cell for the output of the query Dim stSQLstring As String 'text of the cell containing the SQL statement Dim rg As String, SQL As String If AB = "1st" Then stSQLstring = ActiveWorkbook.Sheets("Inner Workings").Range("B2").Text Set rgPlaceOutput = ActiveWorkbook.Sheets("1st Summary").Range("A2") End If If AB = "2nd" Then stSQLstring = ActiveWorkbook.Sheets("Inner Workings").Range("B3").Text Set rgPlaceOutput = ActiveWorkbook.Sheets("2nd Summary").Range("A2") End If If AB = "3rd" Then stSQLstring = ActiveWorkbook.Sheets("Inner Workings").Range("B4").Text Set rgPlaceOutput = ActiveWorkbook.Sheets("Final Summary").Range("A5") End If QueryWorksheet stSQLstring, rgPlaceOutput, ThisWorkbook.FullName, AB End Sub Sub clear() ActiveWorkbook.Sheets("1st Summary").Range("A2:BR5000").Value = Empty ActiveWorkbook.Sheets("2nd Summary").Range("A2:BR5000").Value = Empty ActiveWorkbook.Sheets("Final Summary").Range("A2:BR5000").Value = Empty End Sub 

如果有人可以帮助,我非常感谢。

更新:

显然,这个怪癖比我想象的要大。 经过更多的testing后,我发现第二张汇总表也受到影响。 如这里所见 。 尽pipe至less下半部分。 神秘不断堆积…

我想你必须看看NumberFormat iirc添加一些像“DD / MM / YYYY”范围(在你的情况列)。 我在Office 365上的Mac上,虽然VBA现在在应用程序中,但是这种智能感觉是不存在的,除非您知道Excel Object模型,它是一个皇家PITA!