BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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: 236
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) 1324 mal betrachtet
Duplikat.JPG
Duplikat.JPG (25.75 KiB) 1324 mal betrachtet
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:29, insgesamt 1-mal geändert.

Benutzeravatar
karolus
Beiträge: 2170
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.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
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
Beiträge: 2170
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.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
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
Beiträge: 2170
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.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
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
Beiträge: 2170
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.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
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: 236
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten