Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

String in Datum umwandeln - Am Verzweifeln-

String in Datum umwandeln - Am Verzweifeln-
Holger
Hallo,
Forumssuche bemüht, Tante Google bemüht, keine Lösung.
Ich habe einen String z.B Okt-10.
Diesen schreibe ich in eine Zelle und will es als Datum erkannt haben.
Geht nicht per VBA. Erst wenn ich in Excel in die Zelle klicke und die in
der Befehlsschaltfläche ENTER drücke, dann funktioniert es.
Mit .Value = .Value klappt es auch nicht, CDAT geht nicht, kann mir bitte jemand helfen,
ich werde sonst langsam aggressiv ;).
Sub KlapptNet
strPeriodTAG = strPeriodTAG & "-" & strYear ' ZUM BEISPIEL Okt-10
datPeriod = CDate(strPeriodTAG) 'bringt ganz was Falsches
With RNGPERIOD
.HorizontalAlignment = xlLeft
.NumberFormat = "mmm-yy"
.Value = strPeriodTAG
.FormulaR1C1 = datPeriod
.Value = .Value
End With
' In die Zelle wird zwar Okt-10 geschrieben, aber es wird nicht als Datum erkannt!
End Sub

AW: String in Datum umwandeln - Am Verzweifeln-
03.01.2011 15:08:46
gerwas
Hallo und frohes neues Jahr
ist ja auch ein bischen komisch, für excel...
Warum schreibst du nicht in deine Zelle das Datum CDate("01.10.2010") und formatierts die Zelle "mmm-yy"?
Gruß Gerwas
Das geht nicht ...
03.01.2011 15:17:15
Holger
Hallo,
Ich will ja die Monate stehen haben als Anzeige und nicht 1.10.2011.
Außerdem muss ich dann in dem Makro das umständlich ändern,
denn die Periodentexte, die ich kriege, sind englisch. Also Oktober als October zum Beispiel.
...denn Okt-10 ist GAR NICHTS, weder englisch...
03.01.2011 15:19:28
Luc:-?
…noch deutsch, Holger…
Luc :-?
Ok, ABER ... (bin echt am Verzweifeln)
03.01.2011 15:27:13
Holger
He Luc,
erweise mir die Ehre, an deiner Weisheit teilhabe zu lassen, Sensei!
Schmeiss mir keine Kokosnuss aus zehn Meter Höhe auf meinen Bauch,
sondern erkläre mir warum:
Jetzt habe ich 01.10.2010 (wie vorgeschlagen) in die Zelle geschrieben.
NumberFormat gesetzt blabla
Und dennoch: Erst wenn ich in die Befehlszeile gehe und ENTER drücke,
wird korrekt Okt 10 angezeigt.
Wieso? Ich mache doch .value = .value.
Hier das ganze Makro:
Public Function CreatePeriodTag(ByVal RNGPERIOD As Range)
Dim strPeriodTAG As String, strPeriodDWH As String, strYear As String
Dim i As Integer, intYear As Integer
Dim varTemp As Variant
strPeriodDWH = RNGPERIOD.Value
For i = 1 To Len(strPeriodDWH)
varTemp = Mid(strPeriodDWH, i, 1)
If IsNumeric(varTemp) = True Then
intYear = intYear & varTemp
End If
Next i
strYear = CStr(intYear)
strPeriodDWH = UCase(Left(RNGPERIOD.Value, 3))
Select Case strPeriodDWH
Case "JAN"
strPeriodTAG = "01.01."
Case "FEB"
strPeriodTAG = "01.02."
Case "MAR"
strPeriodTAG = "01.03."
Case "APR"
strPeriodTAG = "01.04."
Case "MAY"
strPeriodTAG = "01.05."
Case "JUN"
strPeriodTAG = "01.06."
Case "JUL"
strPeriodTAG = "01.07."
Case "AUG"
strPeriodTAG = "01.08."
Case "SEP"
strPeriodTAG = "01.09."
Case "OCT"
strPeriodTAG = "01.10."
Case "NOV"
strPeriodTAG = "01.11."
Case "DEC"
strPeriodTAG = "01.12."
End Select
strPeriodTAG = strPeriodTAG & "20" & strYear
With RNGPERIOD
.HorizontalAlignment = xlLeft
.FormulaR1C1 = strPeriodTAG
.NumberFormat = "mmm-yy"
.Value = .Value
End With
RNGPERIOD.Value = RNGPERIOD.Value
End Function

Anzeige
AW: Ok, ABER ... (bin echt am Verzweifeln)
03.01.2011 15:59:14
Rudi
Hallo,
was machst du denn?
Wird die Function aus einem Makro aufgerufen oder schreibst du sie in eine Zelle (=createperiodtag(A1))?
Letzteres kann nicht klappen, da durch das Überschreiben des 'Rohwertes' die Function neu berechnet wird und dann in einen Fehler läuft.
Gruß
Rudi
He Rudi ;)
03.01.2011 18:01:17
Holger
Vielleicht kannst du helfen.
Die Function wird aus einem Makro aufgerufen.
Sie funktioniert ja auch, wenn, ja wenn man eben noch manuell
in die Befehlszeile geht und ENTER drückt.
keine Ahnung, warum oder wieso.
He Rudi ;)
03.01.2011 18:01:48
Holger
Vielleicht kannst du helfen.
Die Function wird aus einem Makro aufgerufen.
Sie funktioniert ja auch, wenn, ja wenn man eben noch manuell
in die Befehlszeile geht und ENTER drückt.
keine Ahnung, warum oder wieso.
Anzeige
siehe oben, Uduuh owT
03.01.2011 23:35:22
Rudi
Ich sagte doch, das ist GAR NICHTS, nur...
04.01.2011 03:26:07
Luc:-?
…Text, kein Datum, nicht nur weder dt noch engl, Holger;
DateSerial fkt nur, weil du alle Komponenten eines Datums angegeben hast! Und darauf kannst du bei xlGut nicht alleine kommen…? :->>
Gruß Luc :-?
AW: Ich sagte doch, das ist GAR NICHTS, nur...
04.01.2011 10:11:50
Holger
Hi Luc,
das xlGut war ein Auswahlfehler ;).
Und 01.1o.2010 ist doch ein Datum, oder nicht?
Nach wie vor verstehe ich ja nicht, wieso das Datum richtig erkannt wird,
sobald man in der Befehlszeile ENTER drückt.
Ihr Experten meckert zwar an meinem Code rum (zu Recht) aber dafür
habt ihr auch keine plausible Erklärung :)
Ich bezog mich auf das Ursprgl, du auf den...
04.01.2011 14:26:56
Luc:-?
…2.Code, Holger,
nun gut zum zweiten…
1. So schreibt man keine Fkt, auch nicht, wenn sie nur für Subroutinengebrauch bestimmt ist!
2. Du ersetzt .FormulaR1C1 mit dem Datumswert, der keine Fml ist. Das kann man bei Zellen, die keine Fmln enthalten, durchaus machen, aber da es sich hier um keinen Datumswert, sondern einen Text handelt, bleibt das auch Text — .Value = .Value nutzt da gar nichts, zumal du ja auch noch eine Eigenschaft benutzt hast, die eigentl eine Fml mit Z1S1-Adressen in US-englischer Notation erwartet. Wenn das Erfolg haben soll, ist die Verwendung von CDate bzw DateSerial deutlich angebrachter.
3. Aber auch so hätte es evtl klappen können, wenn du…
- erst formatierst und dann…
- die FormulaLocal-Eigenschaft benutzt (statt FormulaR1C1)
Denn das Ganze erinnert doch sehr an die Reaktion von Xl, wenn man Formula eine dt (lokale!) Fml zuweist…
Reicht das als „Erklärung“?
Gruß Luc :-?
Anzeige
Danke ...
04.01.2011 15:05:40
Holger,
Hi Luc,
die ganze Datumsgeschichte ist für einen Anfänger nicht so leicht zu verstehen
trotzdem ich darüber einiges in meinem Buch gelesen habe. Da steht von all sowas
leider nichts drin.
Zu Punkt Nr 1, warum keine Funktion? Sollte es besser eine Prozedur sein?
Ansonsten habe ich das jetzt glaube ich verstanden. Das mit FormulasR1C1 hatte
ich aus einem anderem Code, hier hat es durch Zufall wohl richtig funktioniert.
Danke für deine Geduld,
Gruß
Holger
Fkt kann schon sein, meinte nur, Fkt gibt...
04.01.2011 16:32:02
Luc:-?
…Wert zurück und macht nicht irgendwas Fktsuntypisches wie bspw Bereiche formatieren, Holger!
Dann hättest du sie sogar im TabBlatt testen können!
Gruß Luc :-?
Anzeige
AW: Ok, ABER ... (bin echt am Verzweifeln)
04.01.2011 11:02:07
gerwas
Nochmal Hallo
ich verstehe immer weniger...
also:
was steht in welcher Zelle und was willst du wohin schreiben?
Gruß gerwas

376 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige