Du bist nicht angemeldet.

chimperator

Registrierter Benutzer

  • »chimperator« ist der Autor dieses Themas

Beiträge: 43

Dabei seit: 14. Mai 2009

  • Private Nachricht senden

1

Montag, 6. September 2010, 14:18

Datum in String konvertieren

Hallo Leute,

habe heute schon das halbe Internet abgesucht aber nichts zu meinem Problem gefunden, es ist wie folgt:

Ich habe eine Variable dessen Zelle als "Datum" formatiert ist, sieht so aus "TT.MM.YYYY" nur ohne ".

Ich besitze nun eine Abfrage, in der eine Zeile (ein Datum) aus einer Datei ausgelesen wird. Der Text in dieser .bld Datei ist natürlich ein String und erscheint im Makro in "".
Diese Abfrage mache ich, jedoch läuft es auf einen Datentypen unverträglich Fehler hinaus:

If Trim(Datum) < Trim(Pruefdatum) Then
Meldungstext = "Datum falsch. Datum darf den " + Pruefdatum + " nicht unterschreiten"
Stil = vbOKOnly + vbInformation
Titel = "Info"
Meldung = MsgBox(Meldungstext, Stil, Titel)
ThisWorkbook.Sheets("Eingabe").Cells(AnfangsZeile, 1).Select
GoTo Abbruch
End If


Das Problem liegt darin, dass der Inhalt der Variable "Datum" nicht in " steht, da es kein String ist, sondern ein Date und der Inhalt von Pruefdatum in " steht.

Wie kriege ich das Problem gelöst? Ich suche vergeblich nach einer Funktion um das Datum in einen String zu konvertieren, sodass dieser in " steht.

Gruß

chimperator

INOPIAE

Registrierter Benutzer

Beiträge: 1 478

Dabei seit: 18. Januar 2009

Hilfreich-Bewertungen: 3

  • Private Nachricht senden

2

Montag, 6. September 2010, 14:34

Schon mal was von der Format-Funktion gehört? Format(datum,"DDMMYYYY")

By the way: In Excel macht man dies dann mit der Funktion Text.

NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

chimperator

Registrierter Benutzer

  • »chimperator« ist der Autor dieses Themas

Beiträge: 43

Dabei seit: 14. Mai 2009

  • Private Nachricht senden

3

Montag, 6. September 2010, 14:47

Hallo,

nein die Funktion kannte ich nicht.
Aber ich benötige dies ja in VBA, da dies ja dann in einer Variable gespeichert werden muss und so wie
du es aufgezeigt hast, wird es in eine Zelle geschrieben.

Bin ein VB noob!

INOPIAE

Registrierter Benutzer

Beiträge: 1 478

Dabei seit: 18. Januar 2009

Hilfreich-Bewertungen: 3

  • Private Nachricht senden

4

Montag, 6. September 2010, 15:16

Ich habe nur den Systax der Funktion mit der Belegung für Dein Problem angegeben. Da steht nichts davon, dass es eine Variable oder eine Zelle ist.
Wo Du die Funktion nutzt musst Du schon entscheiden.

NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).

chimperator

Registrierter Benutzer

  • »chimperator« ist der Autor dieses Themas

Beiträge: 43

Dabei seit: 14. Mai 2009

  • Private Nachricht senden

5

Dienstag, 7. September 2010, 13:01

Hallo,

leider blicke ich nicht ganz durch wie genau die Anweisung im Modul aussehen soll.

Könntest Du mir das eventuell mal exemplarisch mit einer Wertumwandlung aufzeigen?
Also den Quelltext mal posten?

Wäre echt nett.

Gruß
chimperator

TheoTechnic

ist vom 14.8 bis zum 28.8 offline im Urlaub

Beiträge: 622

Hilfreich-Bewertungen: 78

  • Private Nachricht senden

6

Dienstag, 7. September 2010, 14:50

Ich verstehe dein Problem nicht ganz, auch wenn ich noch nie was in VBA gemacht habe. Zelle einlesen, in Variable speichern, Umwandeln und den neuen Wert der Zelle zuweisen. Korrigiert mich wenn das in VBA nicht so geht (das würde mich aber schon sehr wundern). Umwandeln in String geht so:

Visual Basic Quellcode

1
Cstrg (e As Object) 
Hättest du aber auch in MSDN nachschauen können.

roddy

Registrierter Benutzer

  • »roddy« ist männlich

Beiträge: 596

Dabei seit: 26. März 2008

Hilfreich-Bewertungen: 7

  • Private Nachricht senden

7

Montag, 13. September 2010, 10:02

So wie ich das verstehe, willst du einen String, in dem ein Datum steht (z. B. "13.09.2010") in ein Datum umwandeln. Das geht mit der DateValue-Funktion.

Deine erste Zeile, müsste also so lauten, wenn Pruefdatum auch ein String ist:

Visual Basic Quellcode

1
If DateValue(Trim(Datum)) < DateValue(Trim(Pruefdatum)) Then
Live long and prosper!

roddy

Registrierter Benutzer

  • »roddy« ist männlich

Beiträge: 596

Dabei seit: 26. März 2008

Hilfreich-Bewertungen: 7

  • Private Nachricht senden

8

Mittwoch, 20. Oktober 2010, 12:06

Mit CDate hat es bei mir funktioniert:

Visual Basic Quellcode

1
2
3
4
5
6
7
Dim x As String, d As Date

x = "12.05.2010 17:03"
d = CDate(x)
MsgBox d   'Es wird folgendes ausgegeben: 12.05.2010 17:03:00
MsgBox d + 1                    '13.05.2010 17:03:00
MsgBox d + TimeSerial(1, 0, 0)  '12.05.2010 18:03:00


Bei der Umwandlung wird das im Betriebssystem festgelegte Datumsformat verwendet.

Ich habe gerade zum Testen das Standard-Datumsformat in der Systemsteuerung auf "JJJJ-MM-DD" umgestellt. Danach hat obiger Code nicht mehr funktioniert (In der Zeile mit CDate kam eine Fehlermeldung). Vielleicht liegt ja da dein Problem.

EDIT: Was soll eigentlich der Tiffany-Link?
Live long and prosper!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »roddy« (20. Oktober 2010, 12:13)


zn-gong

Wilhelmstift

  • »zn-gong« ist männlich

Beiträge: 254

Dabei seit: 14. November 2009

Wohnort: Hamburg

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

9

Donnerstag, 21. Oktober 2010, 10:12

CSTR

Um dass aktuelle Datum in meine messagebox auszugeben würde ich Folgendes machen:

Visual Basic Quellcode

1
Try Dim DateString as StringDateString = cstr(Date.Now)Messagebox.Show(DateString,"Aktuelles Datum")Catch ex as exeptionmessagebox.show(ex.message,"Oh Nein, ein Fehler istz aufgetreten)FinallyMessagebox.Show("Die Prozedur wurde beendet")end try



Der Coode hat eine Fehler Behebung und noch Weitere Coode Blöcke Integriert, geht aber 100% :)

Social Bookmarks