2017-06-01 7 views
3

現在、フォームワークシートから情報を取得して表示ワークシートに表示できるExcelアプリケーションに取り組んでいます。これまでのところ、データは完全に転送することができますが、1つの小さな変種を除きます。Excelの時刻形式の自動変更の問題

「表示」ワークシートには、「実行」をクリックするとデータが表示されます。 Here is the screenshot.

私は表示を実行する前に、フォームのワークシートのTimeフィールドをhとしてフォーマットされています:ミリメートルのAM/PMここ
はスクリーンショットです。しかし、私はディスプレイのワークシートで[実行]をクリックしたときに、ここで見られるように、時刻の形式が突然フォームワークシートで変更: as seen here.

さらにフォーマットの変更も、同様の表示表に見られます。私は両方のワークシートで同じフォーマットを設定しようとしましたが、結果は同じです。

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 

誰でも助けていただければ幸いです。

アップデート:どうやら

、この癖は思ったよりも大きくなっています。より多くのテストの後、私は、第2の要約シートがここに見られるだけでなく影響を受けることも分かりました。 as seen here。少なくとも下半分だが。謎は積み重なっていきます...

+0

PS。不便なスクリーンショットには申し訳ありません。投稿に画像を表示するのに十分なポイントがありません。 :p – hjh93

答えて

0

私はNumberFormat iircに "DD/MM/YYYY"のようなものをRange(あなたのケースの列)に追加する必要があります。私はOffice 365を搭載したMacを使用していますが、VBAは現在アプリに入っていますが、Intellisenseはありません。Excelオブジェクトモデルが心に刻まれていない限り、それはロイヤルなPITAです!

関連する問題