2016-11-01 5 views
0

Ich habe Probleme, ein Datum von einem Arbeitsblatt zum anderen zu bringen. Wenn Sie die unten stehende Formel verwenden, wenn das Datum sowohl dem amerikanischen als auch dem australischen Format entsprechen kann, beschließt es, es in Amerikanisch umzuwandeln (MM/TT/JJJJ, wenn ich es als TT/MM/JJJJ brauche).DateValue Format Problem zwischen Arbeitsblättern

Sowohl die Quellzelle als auch die Zielzelle sind beide gleich formatiert, und das Zellenformat selbst wird nicht über die VBA geändert, sondern es wird einfach umgebrochen, was ein Tag und was ein Monat ist.

Sub BOCMS() 

Dim date1 As String 
Dim date2 As String 
date1 = Format(DateValue(Sheet1.Range("L13").Value), "dd/mm/yyyy") 
date2 = Format(DateValue(Sheet1.Range("L14").Value), "dd/mm/yyyy") 

Workbooks.Open (ThisWorkbook.Path & "\Manual date res acts\BOC - Res Activity Report.xlsm") 
Workbooks("BOC - Res Activity Report.xlsm").Activate 

Workbooks("BOC - Res Activity Report.xlsm").Worksheets("Res Activity Report").Range("O1").Select 
Selection.ClearContents 
Selection.Value = Format(date1, "dd/mm/yyyy") 
Workbooks("BOC - Res Activity Report.xlsm").Worksheets("Res Activity Report").Range("Q1").Select 
Selection.ClearContents 
Selection.Value = Format(date2, "dd/mm/yyyy") 


ActiveWorkbook.RefreshAll 
Application.Run "'BOC - Res Activity Report.xlsm'!RunReport" 
End Sub 

würde Irgendwelche Tipps

+1

guter Grund, nicht zu verwenden, Zeichenketten, die nur _look_ mögen. Behandeln Sie das zugrunde liegende Datum mit den Seriennummern. –

+0

Es tut mir leid, ich verstehe nicht, was Sie sagen. Ich habe es als Date anstelle von String versucht und das gleiche Ergebnis erhalten. Haben Sie Vorschläge, wie Sie das Problem beheben können? –

Antwort

0

fantastisch Ich habe keine zwei Installationen mit verschiedenen Einheimischen zu testen, so ist dies nicht getestet, aber sollte in der Nähe

Sub BOCMS() 
    Dim date1 As Double 
    Dim date2 As Double 
    Dim wb1 As Workbook, wb2 As Workbook 

    date1 = Sheet1.Range("L13").Value 
    date2 = Sheet1.Range("L14").Value 

    Set wb1 = Workbooks.Open(ThisWorkbook.Path & "\Manual date res acts\BOC - Res Activity Report.xlsm") 
    Set wb2 = Workbooks("BOC - Res Activity Report.xlsm") 

    With wb2.Worksheets("Res Activity Report").Range("O1") 
     .ClearContents 
     .Value = date1 
     .NumberFormat = "dd/mm/yyyy" 
    End With 

    With wb2.Worksheets("Res Activity Report").Range("Q1") 
     .ClearContents 
     .Value = date2 
     .NumberFormat = "dd/mm/yyyy" 
    End With 


    ActiveWorkbook.RefreshAll 
    Application.Run "'BOC - Res Activity Report.xlsm'!RunReport" 
End Sub 
+0

Vielen Dank, das ist perfekt. Habe noch nie Double benutzt und werde es für zukünftige Zwecke untersuchen müssen. Danke nochmal. –

+0

Zu Forschungszwecken, siehe "DateTime Seriennummer". [Ein Ort zum Starten] (https://msdn.microsoft.com/en-us/library/office/gg264202.aspx) –

Verwandte Themen