Makro um aus Text-Datumfelder richtige Datumfelder zu machen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Heart
*
Beiträge: 14
Registriert: So, 31.07.2005 18:54

Makro um aus Text-Datumfelder richtige Datumfelder zu machen

Beitrag von Heart »

Hallo,

ich habe eine Tabbelle, wo die Spalte A das Datum enthält und Spalte B die Uhrzeit. Das Problem ist, dass diese immer mit einem ' angehen und ich deshalb nicht so ohne weiteres ins Datumformat umwandeln kann. Sieht also z.b. so aus:

Code: Alles auswählen

Spalte A       Spalte B
'11.09.2005  | '17:00
Ich muss jetzt also bei einigen hundert solcher Zellen, dieses ' wegbekommen.

Wie mache ich das am besten?

Ein Freund, der M$ Excel einsetzt macht das mit folgendem Makro:

Code: Alles auswählen

Option Explicit
 

Sub WerteNeuEintragen()
    
    Dim AktZeile, AktSpalte, Startzeile As Integer
    Dim Zellinhalt As Variant
    Dim Tag, Monat, Jahr As Integer
    Dim Trennzeichen
    
    Startzeile = ActiveCell.Row
    AktSpalte = ActiveCell.Column
    
    AktZeile = Startzeile
     
    
    Columns(AktSpalte).NumberFormat = "dd/mm/yyyy;@"
    Columns(AktSpalte + 1).NumberFormat = "hh:mm;@"
    
    Zellinhalt = Cells(AktZeile, AktSpalte)
    Trennzeichen = "/"
    Do While Not Zellinhalt = ""
        Tag = Left(Zellinhalt, 2)
        Monat = Mid(Zellinhalt, 4, 2)
        Jahr = Right(Zellinhalt, 4)
        
        Cells(AktZeile, AktSpalte).Formula = Monat & Trennzeichen & Tag & Trennzeichen & Jahr
        AktZeile = AktZeile + 1
        Zellinhalt = Cells(AktZeile, AktSpalte)
    Loop
    
    
    AktZeile = Startzeile
    AktSpalte = AktSpalte + 1
    Zellinhalt = Cells(AktZeile, AktSpalte)
    Do While Not Zellinhalt = ""
        Cells(AktZeile, AktSpalte).Formula = Zellinhalt
        AktZeile = AktZeile + 1
        Zellinhalt = Cells(AktZeile, AktSpalte)
    Loop
    
End Sub
Aber ich bekomme damit unter OO einen BASIC - Syntaxfehler :?

Bin für jede Hilfe dankbar!
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Heart,

hmm, die Frage ist, wie oft du das benötigst? Einmalig oder regelmäßig. Bei einmalig würde ich nämlich wie folgt vorgehen:

Code: Alles auswählen

Spalte A        Spalte B        Spalte C     Spalte D
'11.09.2005 |  '17:00    |  =datwert(a1) |  =zeitwert(b1)
Die Formeln kopieren und auf alle anderen Zeilen einfügen. Jetzt stehen in Zeile C und D die jeweiligen Datumswerte. Zeile C+D kopieren, auf A+B einfügen, und zwar nur Werte! (Inhalte einfügen). Jezt kannst du Spalte C+D löschen, du brauchst Sie nicht mehr. Jetzt musst du nur noch Spalte A als Datum formatieren (tt.mm.jjjj) und Spalte B als Zeit (hh:mm). Fertig.
Also, für einmalige oder seltene Umwandlungen der geringstte Aufwand.

Mit Basic geht das natürlich auch - und sicher eleganter. Aber dann brauche ich ein paar mehr Infos, z.B. sind die Spalten alle ausgefüllt? ist die Spalte C leer? Sollen alle Werte umgewandelt werden bis zur letzten gefüllten Zeile? Gibt es eine feste Startadresse oder soll die Cursorposition entscheiden? Gib mir ein paar mehr Daten, das Makro ist dann kein Problem.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Heart
*
Beiträge: 14
Registriert: So, 31.07.2005 18:54

Beitrag von Heart »

Die beschriebene Methode hat soweit funktioniert, danke!
Toxitom hat geschrieben:....
Mit Basic geht das natürlich auch - und sicher eleganter. Aber dann brauche ich ein paar mehr Infos, z.B. sind die Spalten alle ausgefüllt? ist die Spalte C leer? Sollen alle Werte umgewandelt werden bis zur letzten gefüllten Zeile? Gibt es eine feste Startadresse oder soll die Cursorposition entscheiden? Gib mir ein paar mehr Daten, das Makro ist dann kein Problem.
Da diese Änderungen doch desöfteren gemacht werden müssen, wäre ein Makro natürlich die elegantere Methode auf Dauer.

Sind die Spalten alle ausgefüllt?
- Ja, die Spalten sind alle ausgefüllt

Ist die Spalte C leer?
- Spalte C ist nicht leer, sondern auch immer gefüllt mit anderen Daten (es gibt Spalte A-J, wobei eben nur bei A und B die o.g. Anpassung gemacht werden müsste)

Sollen alle Werte umgewandelt werden bis zur letzten gefüllten Zeile?
- Ja, alle Werte in Spalte A und B sollen (ab A4 bzw. B4) bis ganz runter (bis eine leere Zelle kommt) umgewandelt werden

Gibt es eine feste Startadresse oder soll die Cursorposition entscheiden?
- Das wäre egal, wie es für dich einfacher zu handhaben wäre. Generell beginnt es IMMER in Spalte A4 (Datum) bzw. B4 (Uhrzeit) und von dort dann Zeile für Zeile runter bis die erste leere Zelle kommt)

Vielen DANK!
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Morgen Heart,

na gut, dann eben ein Makro:

Code: Alles auswählen

Sub Werte_Umwandeln
	Dim oDoc as object, oSheet as object, oZelle as object
        Dim nSp as integer, nZe as integer, iCode as integer
        oDoc = thisComponent
	oSheet = oDoc.sheets(0)
	For nSp = 0 to 1    ' Spalte "a" und "B"
		nZe = 3             'Startzeile 4
		Do while oSheet.getCellbyPosition(nSp, nZe).String <> ""
		    oZelle = oSheet.getCellByPosition(nSp, nZe & i)
		    oZelle.value = CDate(oZelle.String)
		    if nSp = 0 then iCode = 30 ' Datumsformat TT.MM.JJJJ
		    if nSp = 1 then iCode = 40 'Zeitformat HH:MM
		    oZelle.NumberFormat = iCode 
		    nZe = nZe + 1
		loop 
	next
 end sub
Arbeitet die Spalten A und B ab, jeweils ab Zeile 4 bis zur ersten leeren Zeile.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Heart
*
Beiträge: 14
Registriert: So, 31.07.2005 18:54

Beitrag von Heart »

Klappt!!!

Danke nochmals!!!! :!:
Mondblatt24
*******
Beiträge: 1143
Registriert: So, 14.05.2017 16:11

Re: Makro um aus Text-Datumfelder richtige Datumfelder zu machen

Beitrag von Mondblatt24 »

Hallo,
dieses Problem wurde schon öfter behandelt und mit Suchen und Ersetzen gelöst.

https://www.libreoffice-forum.de/viewto ... mma#p44453

Gruß Peter

_____________________
Moderationshinweis:
Bitte keine "alten" Threads mehr aufwärmen.
Siehe auch Infos zur Forenbenutzung (dort unter: "Eröffnet neue Threads").
Eröffne bitte einen neuen Thread mit Deiner Frage.
Thread geschlossen.
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wurde die Frage zutreffend beantwortet bitte den Betreff der Eingangsfrage mit [GELÖST] ergänzen. Beschreibung
Gesperrt