Hallo zusammen,
nachdem ich schon längere Zeit hier mitlese und immer gute Anregungen gefunden habe,hier nun doch ein Problem das ich nicht gelöst bekomme.
Meine Daten bekomme als Excelliste 2003 - Datum ist Text dd.mm.jjjj.
Ich benötige das Datum um
- Zeiträume zu berechen (Excel)
- einen Datenschnitt zu filtern (VBA) - und hier hängt es.
Da die Daten am Ende nur via Copx&Paste in eine Vorlage sollen habe ich in Excel eine weitere Spalte eingefügt, damit ich das Datum als Date habe. Leider musste ich hier auch schon mit VBA "drüberformatieren", da das Format beim Wechsel englisch/deutsches Betriebssystem Probleme machte.
Zu 98% läuft das jetzt auch - aber die 2% bekomme ich nicht gelöst.
Die Spalte mit dem Textdatum nach Max zu durchsuchen habe ich auch schon versucht, bekomme dann aber Ergebnisse aus dem Jahr 2085 :-(
Manchmal wird das größte Datum nicht gefunden und an den Datenschnitt wird nichts übergeben.
Was habe ich also so zusammen (wird in dieser Reihenfolge ausgeführt, restlicher Code fehlt):
ThisWorkbook.Sheets("xxx").Range("C:C").NumberFormat = "dd.mm.yyyy;@" 'Datumsumwandlung DEUTSCH erzwingen (???)
ThisWorkbook.Sheets("xxx").Range("C2", Cells(lngRow, 2)).Select
varNextDate = Application.WorksheetFunction.Large(Selection, 1) ' Datumswert max in eingefügten Daten
'Large verwende ich hier, weil Max auf englischem System auch schon nur sporadisch 'funktionierte. An anderer Stelle klappt es aber
'varDaily = CStr(varNextDate) 'Umwandlung in String
'varDaily = varNextDate
'Beide Versionen sind im Datenschnitt nicht zuverlässig
Call SlicerItemSetzen(objSlicerCache:=ActiveWorkbook.SlicerCaches("Datenschnitt_Date"), _
strNameItem:=varDaily)
Und last:
----------------------------------------------
Public Sub SlicerItemSetzen(objSlicerCache As SlicerCache, ByVal strNameItem As String)
' Datenschnitt - SlicerItem Setzen
Dim objSlicerItem As SlicerItem
With objSlicerCache
For Each objSlicerItem In .VisibleSlicerItems
With objSlicerItem
If .Name <> strNameItem Then
If .Selected = True Then .Selected = False
End If
End With
Next
If .SlicerItems(strNameItem).Selected = False Then
.SlicerItems(strNameItem).Selected = True
End If
End With
End Sub
----------------------------------------------------------------------------------
Wie gesagt, zu 98% funktioniert es, und dann wieder nicht.
Importiere ich die gleiche Datei nocheinmal klappt es dann doch.
Naja, eigentlich hat das mit dem Datum von Anfang an immer wieder Probleme gemacht und ich habe vermutlich aussenrum gearbeitet.
Bin gerade für jeden Tipp dankbar.
Will das Ding endlich loshaben bevor die nächste Änderung kommt.