Excel und Datumsfelder

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Excel und Datumsfelder

Beitrag von Koverhage »

Hallo,

komme irgendwie mit Datumsfelder in Excel nicht klar.
Habe das Activex Beispiel (Excel2.pg) von Alaska genommen
und erweitert.

oSheet:Columns( 1 ):NumberFormat := "0" // KD-Nummer
oSheet:Columns( 2 ):NumberFormat := "@" // KD-Bezeichnung
oSheet:Columns( 3 ):NumberFormat := "0" // Sachbearbeiter
oSheet:Columns( 4 ):NumberFormat := "m/d/yyyy" // Rechnungsdatum

Das Format für Rechnungsdatum habe ich so aus der Maroaufzeichnung
übernommen.

Leider wird so ein Datum abgespeichert (zumindest nicht sichtbar) oder
in der Form 12/25/2005.

Wenn z.B. das Datum 02.01.2006 ist ist dies nur als 1/d/yyyy sichtbar,
wenn ich dann die Zelle nochmals als Datumsfeld formatiere zeigt Excel das Datum an. Was mache ich hier falsch ?

Gruß
Klaus
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Klaus,
bei meinem eben versuchsweise aufgezeichneten Makro steht folgendes:
Selection.NumberFormat = "m/d/yy;@"

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hallo Martin,

das geht auch nicht, gleiches Verhalten wie vorher.

Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Klaus,

willst du mit dem Datum rechnen ?

Wenn nicht übergib es als String z.b. "'21.12.2004" zu beachten ist das ' nach dem " sonst macht Excel daraus eine Zahl.

So mache ich es bei Cut&Paste Vorlagen in Textform, warum sollte es nicht auch über ActiveX so gehen. Gleiches übrigens bei PLZ etc.
Diese besteht zwar aus Ziffern, ist aber keine Zahl.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Hallo Hubert,

ich nicht aber eventuell der Anwender. In der Tabelle sollen mehrere Datumsfelder stehen, es kann schon sein das jemand auf die Idee kommt,
z.B. für Mahnungen Datum - Fälligkeitsdatum die Tage auszurechnen.

Werde das aber mal so probieren.

Tschüß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

also wenn ich bei Excel 2003 '20.04.2005 in ein Datumsformatiertes
Feld eingebe, ist es zwar linksbündig, man kann aber damit rechnen wie mit einem normalen Datum, ob es über ActiveX auch geht weis ich nicht.
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Habe das jetzt wie folgt gelöst:

oSheet:Columns( 1 ):NumberFormat := "0" // KD-Nummer
oSheet:Columns( 2 ):NumberFormat := "@" // KD-Bezeichnung
oSheet:Columns( 3 ):NumberFormat := "0" // Sachbearbeiter
oSheet:Columns( 4 ):NumberFormat := "TT.MM.JJJJ" // Rechnungsdatum

und
übertrage das Feld mit DTOC

ob man damit rechnen kann ist mir (noch) nicht bekannt, aber so sieht es
schon mal wie das Ergebnis aus, welches ich haben wollte ;-)

Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Wenn ich auf derlei Probleme trete, wähle ich den umgekehrten Weg, bestücke also beispielsweise ein Excel-Sheet mit Datumswerten, formatiere die Zellen und lese dann die Infos per ActiveX-Zugriff aus.
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Koverhage »

Tom,

hast Du dafür ein Beispiel?
Bei mir hat die vorherige Festlegung der Formatierung noch die nachträgliche über Select() was genützt.

Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Koverhage hat geschrieben: oSheet:Columns( 4 ):NumberFormat := "TT.MM.JJJJ" // Rechnungsdatum
und übertrage das Feld mit DTOC
TOM hat geschrieben: Wenn ich auf derlei Probleme trete, wähle ich den umgekehrten Weg, bestücke also beispielsweise ein Excel-Sheet mit Datumswerten, formatiere die Zellen und lese dann die Infos per ActiveX-Zugriff aus.
nimmt man nun beides zussammen kommt man zur Lösung des
Problem :

Code: Alles auswählen

nEnde := RECCOUNT()
...
oSheet:range("F6:F"+LTRIM(STR(nEnde))):NumberFormat := "TT.MM.JJ"
...
DO WHILE .NOT. EOF() 
   nStart++
...
   oSheet:item(nStart,6):Value  :=  DTOC(UMSATZ->UBEZADAT)
man "formatiert" also die ganze Spalte (:range("F6-F"xxx) bevor
man die einzelnen Zellen füllt.

gruss by OHR
Jimmy
Antworten