🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST] Arbeitsblatt nur mit Werten und Formaten duplizieren

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 22:09

Diesen Code habe ich auf 5 Arbeitsblätter erweitert und angewendet.
Hat bis auf ein paar Formatierungsprobleme auch gut funktioniert.
Hier je ein Beispiel ohne und mit Formatierungsproblem

Ohne Formatierungsproblem rechtsbündig als Dezimalzahl -1.234,57 € formatiert.
> = nach ausführen des Codes.
Zelle G:19 =$'Probe1-2'.D127 40,00 € > 40,00 €

Mit Formatierungsproblem linksbündig als Text @ formatiert.
Zelle G20 =$Probe2.D127 42,75 € > 42,74

Bei den Summenzellen die diese Werte enthalten sieht es genau so aus.
Im Original-Arbeitsblatt sind beide Zellen als Dezimalzahl -1.234,57 € formatiert.
Auch wenn ich Probe2 in ' ' schreibe entsteht dieses Formatierungsproblem und die ' ' sind nach Ausführung des Codes im Original-Arbeitsblatt nicht mehr vorhanden.

Ich hoffe das Formatierungsproblem verständlich genug beschrieben zu haben.

Zwei Bilder sagen mehr als viele Worte.
Original.JPG
Original.JPG (26.78 KiB) 2625 mal betrachtet
Duplikat.JPG
Duplikat.JPG (25.75 KiB) 2625 mal betrachtet
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:29, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Mo 15. Nov 2021, 23:46

Versuchs mal mit

Code: Alles auswählen

cellrange.DataArray = cellrange.DataArray
in der for each … next -Schleife
Zuletzt geändert von karolus am Di 16. Nov 2021, 14:09, insgesamt 1-mal geändert.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Di 16. Nov 2021, 11:48

Hallo karolus,
besten Dank. Das war die Lösung des Formatierungsproblems.
Viele Grüße
Ich Bins
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:29, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Di 16. Nov 2021, 14:14

Hallo
Bitte editiere den Titel deines Ausgangsposts, und entferne VBA:
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Di 16. Nov 2021, 17:11

karolus hat geschrieben:
Di 16. Nov 2021, 14:14
Bitte editiere den Titel deines Ausgangsposts, und entferne VBA:
Habe ich gemacht, aber leider hat das keine Auswirkung auf die Titel der schon geschriebenen Beiträge der Unterhaltung.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Di 16. Nov 2021, 17:31

deine eigenen Beiträge kannst du ja auch editieren,
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mi 17. Nov 2021, 22:52

Hallo karolus,
karolus hat geschrieben:
Mo 15. Nov 2021, 23:46
Versuchs mal mit
Code: Alles auswählen
cellrange.DataArray = cellrange.DataArray
in der for each … next -Schleife
Zunächt war ich der Meinung, das ist die Lösung, es war aber ein Trugschluss.
Ich habe Deinen Vorschlag so

Code: Alles auswählen

    for each cellrange in formula_query
       cellrange.DataArray = cellrange.DataArray
       'cellrange.FormulaArray = cellrange.DataArray
    next    
umgesetzt.
Jetzt sind aber noch alle Verknüpfungen vorhanden.

Viele Grüße
Ich Bins

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Do 18. Nov 2021, 04:46

Hallo
Basic ist einfach völlig kaputt und unberechenbar, … aber egal, mit

Code: Alles auswählen

cellrange.setDataArray(cellrange.DataArray)
tuts dann hoffentlich.

(zur Info: manche Sachen teste ich mit analogen Code aber in Python)
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Fr 19. Nov 2021, 00:16

Hallo karolus,
das müsste es jetzt wirklich gewesen sein, Danke.

Ich Bins
Beiträge: 243
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 22. Nov 2021, 00:42

Ein weiteres Problem ist mir aufgefallen.

Im Arbeitsblatt Original befindet sich in einigen als Dezimalzahl-Standard formatierten Zellen die Funktion =TEXT(Daten.C26;"JJJJ")+1
die als 2021 angezeigt wird.
Im Arbeitsblatt Daten befindet sich in der als Datum-31.12.1999 formatierte Zelle C26
01.01.2020
Mit nachfolgendem Code erstelle ich das Arbeitsblatt Kopie_2021 des Arbeitsblattes Original in der nur dessen Werte und Formatierungen enthalten sein sollen.
Der Code funktioniert bei einigen Arbeitsblättern problemlos nur mit der Funktion =TEXT(Daten.C26;"JJJJ")+1 gibt es ein Problem.

Code: Alles auswählen

Sub Jahresproblem
    doc = thisComponent
    sheets = doc.Sheets
    copyName = "Kopie_"& Year(Date)
    sheets.copyByName("Original",CopyName,11)
    sheet = sheets.getByName(CopyName)
    formula_query = sheet.queryContentCells(16)
    for each cellrange in formula_query
         cellrange.setDataArray(cellrange.DataArray)
    next 
End Sub
Nach dem Ausführen des Codes befindet sich im Arbeitsblatt Kopie_2021 in den entsprechenden Zellen nicht 2021 sondern 1900.

Wie wird aus 2021 in der Kopie 2021 ?

Viele Grüße
Ich Bins


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten