Seite 1 von 2
Datum als Text
Verfasst: Do, 09.07.2015 18:30
von Jörg
Hallo Fachleute,
nachstehender Originalcode, den mir freundlicherweise clag geschrieben hat, überträgt Text als Text, Datum als Datum und Zahlen als Zahlen. Alles chic.
Code: Alles auswählen
sub ChangeCustomerData
myDoc = thisComponent
mySheet = myDoc.sheets(1)
myData = myDoc.sheets(0)
check = mysheet.getCellByPosition(5,6).string
myPid = mysheet.getCellByPosition(4,7).string
if check = "1" then
search = "~"
do until search = myPid
y=y+1
search = myData.getCellByPosition(0,y).string
loop
for i=0 to 8
ReplaceData = mysheet.getCellByPosition(5,8+i).string
if ReplaceData <> "" then
myData.getCellByPosition(1+i,y).string = ReplaceData
end if
next
else
print "Pat.Nr nicht im Bestand"
exit sub
end if
end sub
Diesen Code habe ich nun für eine andere Anwendung geändert, wie folgt:
Code: Alles auswählen
sub ChangeCustomerData
myDoc = thisComponent
mySheet = myDoc.sheets(0)
myData = myDoc.sheets(1)
myPid = mysheet.getCellByPosition(1,1).string
search = "~"
do until search = myPid
y=y+1
search = myData.getCellByPosition(0,y).string
loop
msgbox "Rechnungsnummer" & chr(10)& mypid
for i=0 to 8
ReplaceData = mysheet.getCellByPosition(2,2+i).string
if ReplaceData <> "" then
myData.getCellByPosition(7+i,y).string = ReplaceData
end if
next
end sub
Das Problem hier ist, dass das Datum welches geändert werden soll, als Text (also mit Hochkomma) eingefügt wird.
Habt Ihr 'ne Idee?
Gruß Jörg
Re: Datum als Text
Verfasst: Do, 09.07.2015 18:57
von clag
Hallo Jörg,
vermuten würde ich das im ersten Fall aus einer als Text formatierten Zelle das Datum gelesen wird
und auch wieder in eine Text formatierte Zelle geschrieben wird.
In der zweiten Variante schreibst du vermutlich in eine Standard formatierte Zelle deshalb wird das ' davor gesetzt.
leere die Zielzellen und formatiere die Zielzellen als "Text" und versuch es dann noch einmal.
Re: Datum als Text
Verfasst: Do, 09.07.2015 19:30
von Karolus
Wie die Zielzelle formatiert ist, ist völlig irrelevant, solange letzlich ein String geschrieben wird:
die 4.letzte Codezeile:
...wird
grundsätzlich einen Text hinterlassen, und notfalls ein 'Hochkomma zur impliziten Textformatierung davorsetzen.
nachstehender Originalcode, den mir freundlicherweise clag geschrieben hat, überträgt Text als Text, Datum als Datum und Zahlen als Zahlen. Alles chic
ich kann in dem Code beim besten Willen keine Stelle erkennen an der
kein Text geschrieben wird.
Re: Datum als Text
Verfasst: Do, 09.07.2015 19:40
von clag
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!
Re: Datum als Text
Verfasst: Do, 09.07.2015 19:47
von komma4
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
Re: Datum als Text
Verfasst: Do, 09.07.2015 19:48
von Karolus
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
Verfasst: Do, 09.07.2015 20:05
von clag
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
Verfasst: Do, 09.07.2015 20:13
von Karolus
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
Verfasst: Do, 09.07.2015 20:23
von clag
@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
Verfasst: Do, 09.07.2015 21:04
von komma4
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
Verfasst: Do, 09.07.2015 21:17
von clag
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
Verfasst: Do, 09.07.2015 21:33
von Jörg
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.

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
Verfasst: Do, 09.07.2015 21:51
von clag
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
geschrieben wird
und 7 ist H und vermutlich y=24 ist
füge doch mal unter dem "loop" ein
ein, dann bekommst du den Wert von y zu sehen
Re: Datum als Text
Verfasst: Do, 09.07.2015 22:05
von Jörg
Hallo clag,
für y erscheint der Wert 164 ????
Gruß Jörg
Re: Datum als Text
Verfasst: Do, 09.07.2015 22:07
von Jörg
P.S. es geht um den zweiten Code.