Datum als Text

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datum als Text

Re: Datum als Text

von clag » Fr, 10.07.2015 07:15

Hallo komma4,
komma4 hat geschrieben:Das Einfügen mit .setString(wert) oder .String = wert setzt Text.
Calc ist das egal, ob Du vorher formatierst oder nicht. Und der Wert der Zelle ist in beiden gleich, auch wenn in der Formel-Bar noch ein Hochkomma erscheint.
nichts anderes habe ich behauptet
komma4 hat geschrieben:auch wenn in der Formel-Bar noch ein Hochkomma erscheint.
und darum schrieb ich
clag hat geschrieben:das makro "handelt" nur Text und schreibt diesen dann in eine nicht Textformatierte Zelle
darum wird von Calc das ' davor gesetzt.

Da sind wir uns doch einig.
und nur darum ging es doch
Jörg hat geschrieben: Das Problem hier ist, dass das Datum welches geändert werden soll, als Text (also mit Hochkomma) eingefügt wird.
Habt Ihr 'ne Idee?
es ging hierbei sicherlich nicht um ein sichtbares Hochkomma in der Zelle sondern das ' in der Eingabezeile.
so habe ich jedenfalls Jörgs Frage verstanden.
clag hat geschrieben:produziert bei mir in
A2 Standard formatiert ein ['1.5.2015] und B2 ein [1.5.2015] weil Text formatiert vor dem einfügen
ich hatte geglaubt das rote ' macht das deutlich

Re: Datum als Text

von Jörg » Do, 09.07.2015 23:02

Hallo @ clag,
das zweite Problem ist gelöst. Der Fehler lag im Dialog, den ich dazu aufrufe.
Vielen Dank für an alle.
Gruß Jörg

Re: Datum als Text

von komma4 » Do, 09.07.2015 22:15

clag hat geschrieben:A2 Standard formatiert ein ['1.5.2015] und B2 ein [1.5.2015] weil Text formatiert vor dem einfügen
Das Einfügen mit .setString(wert) oder .String = wert setzt Text.
Calc ist das egal, ob Du vorher formatierst oder nicht. Und der Wert der Zelle ist in beiden gleich, auch wenn in der Formel-Bar noch ein Hochkomma erscheint.


Edit:
Karolus hat das oben schon mal geschrieben...
Karolus hat geschrieben:Wie die Zielzelle formatiert ist, ist völlig irrelevant, solange letzlich ein String geschrieben wird: [...]
grundsätzlich einen Text hinterlassen, und notfalls ein 'Hochkomma zur impliziten Textformatierung davorsetzen.

Re: Datum als Text

von Jörg » Do, 09.07.2015 22:07

P.S. es geht um den zweiten Code.

Re: Datum als Text

von Jörg » Do, 09.07.2015 22:05

Hallo clag,
für y erscheint der Wert 164 ????
Gruß Jörg

Re: Datum als Text

von clag » Do, 09.07.2015 21:51

Hallo Jörg,
ein Thema ein Thread bitte.
Jörg hat geschrieben:Das Problem: Anstatt in G23 schreibt mir der Code in H25. :(
Wie kommt denn das ???
weil hier

Code: Alles auswählen

myData.getCellByPosition(7+i,y).string = ReplaceData  
geschrieben wird
und 7 ist H und vermutlich y=24 ist

füge doch mal unter dem "loop" ein

Code: Alles auswählen

print y   

ein, dann bekommst du den Wert von y zu sehen

Re: Datum als Text

von Jörg » Do, 09.07.2015 21:33

Hallo Fachleute,
danke für die angeregte Diskusion.
Da ich zunächst nur ein Datum eintragen will, habe ich den Code so geändert.

Code: Alles auswählen

sub Neues_Mahnungsdatum

	myDoc = thisComponent
	mySheet = myDoc.sheets(). getByName ("Tabelle12")
	myData = myDoc.sheets().getByName ("Rechnungen")     
	myPid = mysheet.getCellByPosition(1,7).value
		search = "~"
		do until search = myPid
			y=y+1
			search = myData.getCellByPosition(0,y).value
		loop
 
 		for i=0 to 0
			ReplaceData = mysheet.getCellByPosition(7,24).value
			if ReplaceData <> "" then  
			myData.getCellByPosition(35+i,y).value = ReplaceData 					
	end if
	next
end sub
Zur Ausgangssituation (Originalcode)kann ich nur sagen, daß ich die betreffenden Zellen (Datum und Zahlen) nicht als Text formatiert habe.
Obwohl es ein Widerspruch zu sein scheint, funktioniert es aber so. :shock:
Wenn Ihr gestattet, würd ich gern ein anderes Problem einstellen.
Ähnlicher Code:

Code: Alles auswählen

sub status_aendern

	myDoc = thisComponent
	mySheet = myDoc.sheets(). getByName ("Tabelle12")
	myData = myDoc.sheets().getByName ("Rechnungen")     
	myPid = mysheet.getCellByPosition(1,7).string
		search = "~"
		do until search = myPid
			y=y+1
			search = myData.getCellByPosition(0,y).string
		loop
 
 		for i=0 to 0
			ReplaceData = mysheet.getCellByPosition(6,23).string 'ZielZelle ist G24 Wird aber in H25 geschrieben
			if ReplaceData <> "" then  
			myData.getCellByPosition(7+i,y).string = ReplaceData 					
	end if
	next
end sub
Das Problem: Anstatt in G23 schreibt mir der Code in H25. :(
Wie kommt denn das ???
Gruß Jörg

Re: Datum als Text

von clag » Do, 09.07.2015 21:17

Hallo komma4,

dann haben wir unterschiedlich reagierende Syteme
dieses Makro

Code: Alles auswählen

Sub Main
oCalc = ThisComponent
oSheet = oCalc.CurrentSelection.SpreadSheet
osheet.GetCellRangeByName("A2").String = "1.5.2015"  
osheet.GetCellRangeByName("B2").String = "1.5.2015"  
End Sub
produziert bei mir in
A2 Standard formatiert ein ['1.5.2015] und B2 ein [1.5.2015] weil Text formatiert vor dem einfügen

Re: Datum als Text

von komma4 » Do, 09.07.2015 21:04

clag hat geschrieben:ist das Resultat von Text in einer "Standard Zelle" erzwingen
Nein:

die verwendete Methode setString() setzt Text - unabhängig davon, wie die Ziel-Zelle formatiert ist

Re: Datum als Text

von clag » Do, 09.07.2015 20:23

@Karolus

ja die Aussage von Jörg ist da nicht stimmig zum gezeigten Code.

Das beschriebene "Fehlverhalten" ist das Resultat von Text in einer "Standard Zelle" erzwingen.

Ich hoffe darin sind wir und einig. ;)

Re: Datum als Text

von Karolus » Do, 09.07.2015 20:13

Hallo

Die entscheidende Stelle ist für mich Jörgs Kommentar:
Jörg hat geschrieben:nachstehender Originalcode, den mir freundlicherweise clag geschrieben hat, überträgt Text als Text, Datum als Datum und Zahlen als Zahlen. Alles chic.
Das trifft nicht zu, weil dort auch nur Text in die Zellen geschrieben wird.

Re: Datum als Text

von clag » Do, 09.07.2015 20:05

Hallo Karlus,
Karolus hat geschrieben:ich kann in dem Code beim besten Willen keine Stelle erkennen an der kein Text geschrieben wird.
dieser Nachsatz von dir ist doch genau das, was ich genauso meinte/ schrieb,
das makro "handelt" nur Text und schreibt diesen dann in eine nicht Textformatierte Zelle
darum wird con Calc das ' davor gesetzt.

Da sind wir uns doch einig.

@komma4
du schreibst es ja auch ganz deutlich
wenn das "Datum" ein Datum wäre, wäre es ein Datums Wert
durch das Lesen als String wird es zum Text "1.5.2015"
und wird dann als Text in eine nicht Textzelle als '1.5.2015 eingefügt

Ich habe da keine andere Meinung.

und @Jörg sollte mit Text formatierten Zielzellen das ' los sein.

Re: Datum als Text

von Karolus » Do, 09.07.2015 19:48

clag hat geschrieben:hallo Karolus,

wo unterscheidet sich denn nun
clag hat geschrieben:schreibst du vermutlich in eine Standard formatierte Zelle deshalb wird das ' davor gesetzt.
von
Karolus hat geschrieben:grundsätzlich einen Text hinterlassen, und notfalls ein 'Hochkomma zur impliziten Textformatierung davorsetzen.
Das stimmt soweit,( wir schreiben das gleiche )



clag hat geschrieben:
Karolus hat geschrieben:Wie die Zielzelle formatiert ist, ist völlig irrelevant,

das sehe ich anders, genau das spielt die entscheidende Rolle!
Bei dem gezeigten Code spielt die Formatierung der Zielzelle keine Rolle, weil sowieso Text geschrieben wird

Re: Datum als Text

von komma4 » Do, 09.07.2015 19:47

Vermuten ist schlecht - Testen ist besser:

setString setzt eine Zeichenkette - setValue einen Wert

Ein Datum in CALC ist intern "nur" die Anzahl Tage seit dem "Null-Datum" [Extras>Einstellungen...>Calc>Berechnen>Datum]

Der Wert von heute 42195 wird durch ein Zahlenformat als Datum dargestellt. [C2]

Sonderfall: wird eine Zeichenkette (=Datum in gültigem Format) an .FormulaLocal zugewiesen, so wird sie als Datum interpretiert und übertragen [C7]

Siehe Beispiele im Anhang
calc_get_set_date.ods
(11.5 KiB) 102-mal heruntergeladen

Re: Datum als Text

von clag » Do, 09.07.2015 19:40

hallo Karolus,

wo unterscheidet sich denn nun
clag hat geschrieben:schreibst du vermutlich in eine Standard formatierte Zelle deshalb wird das ' davor gesetzt.
von
Karolus hat geschrieben:grundsätzlich einen Text hinterlassen, und notfalls ein 'Hochkomma zur impliziten Textformatierung davorsetzen.
Karolus hat geschrieben:Wie die Zielzelle formatiert ist, ist völlig irrelevant,

das sehe ich anders, genau das spielt die entscheidende Rolle!

Nach oben