🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
getCellRangeByName: Bereich auswählen und speichern
getCellRangeByName: Bereich auswählen und speichern
Hallo liebes Forum.
Ich arbeite derzeit an einer Angebotsvorlage, wo ich Stunden, Stundensatz, Leistungen, etc. eintragen kann und mir Calc daraus dann ein Angebot zusammenstellt.
Die Tabelle sieht derzeit circa so aus:
[Leistung #1]
-Leistungspunkt #1
-Leistungspunkt #2
-Leistungspunkt #3
(...)
[Leistung #2]
Ich greife auf Leistung #1 und Leistung #2 mittels Zellennamen zu, das funktioniert. Allerdings bräuchte ich noch den Bereich zwischen den beiden Punkten, also alle Leistungspunkte. Da sich diese vermutlich in Zukunft ändern werden (es werden welche gelöscht oder hinzugefügt) und ich das Makro dann nicht jedes Mal umschreiben will, will ich dynamisch auf diesen Bereich zugreifen. Das hat vor allem damit zu tun, dass mit dieser Vorlage 5 Leute arbeiten werden.
Jetzt habe ich dazu zwei Fragen:
1. Wie kann ich getCellRangeByName sagen, dass er von "Leistungsname1" bis "Leistungsname2" auswählen soll?
2. Wie speichere ich diese Daten? In ein Array?
Ich habe zwar schon Hilfe zu getCellRangeByName, ich verwende es auch schon, aber wie ich mehrere Zellen abspeichere habe ich noch nicht gefunden.
mit grüßen
Ich arbeite derzeit an einer Angebotsvorlage, wo ich Stunden, Stundensatz, Leistungen, etc. eintragen kann und mir Calc daraus dann ein Angebot zusammenstellt.
Die Tabelle sieht derzeit circa so aus:
[Leistung #1]
-Leistungspunkt #1
-Leistungspunkt #2
-Leistungspunkt #3
(...)
[Leistung #2]
Ich greife auf Leistung #1 und Leistung #2 mittels Zellennamen zu, das funktioniert. Allerdings bräuchte ich noch den Bereich zwischen den beiden Punkten, also alle Leistungspunkte. Da sich diese vermutlich in Zukunft ändern werden (es werden welche gelöscht oder hinzugefügt) und ich das Makro dann nicht jedes Mal umschreiben will, will ich dynamisch auf diesen Bereich zugreifen. Das hat vor allem damit zu tun, dass mit dieser Vorlage 5 Leute arbeiten werden.
Jetzt habe ich dazu zwei Fragen:
1. Wie kann ich getCellRangeByName sagen, dass er von "Leistungsname1" bis "Leistungsname2" auswählen soll?
2. Wie speichere ich diese Daten? In ein Array?
Ich habe zwar schon Hilfe zu getCellRangeByName, ich verwende es auch schon, aber wie ich mehrere Zellen abspeichere habe ich noch nicht gefunden.
mit grüßen
Re: getCellRangeByName: Bereich auswählen und speichern
Moin,
Deine Frage ist eine Makro Frage und gehört in die Kategorie LibreOffice Programmierung.
Lies Dir am besten mal die allgemeinen Hinweise in diesem Forum durch, insbesondere den Abschnitt Wie stelle ich ein Beispieldokument zur Verfügung (und wozu)?
Was genau deine Frage ist, habe ich nicht verstanden.
Stehen Leistungsname1 und Leistungsname2 untereinander oder nebeneinander
Kommt evetuell Leistungsname3/4/5/... hinzu, wo sollen die Zellinhalte hin?
Grundsätzlich kannst Du mit die Zeilen- und Spaltenindizes des Zellbereiches auslesen.
Wenn Du also die Zeile(n) und Spalte(n) von Leistungsname1 und Leistungsname2 kennst, kannst Du den Bereich dazwischen auch ermitteln.
Ein Beispieldokument könnte helfen.
Gruß R
Deine Frage ist eine Makro Frage und gehört in die Kategorie LibreOffice Programmierung.
Lies Dir am besten mal die allgemeinen Hinweise in diesem Forum durch, insbesondere den Abschnitt Wie stelle ich ein Beispieldokument zur Verfügung (und wozu)?
Was genau deine Frage ist, habe ich nicht verstanden.
Stehen Leistungsname1 und Leistungsname2 untereinander oder nebeneinander
Kommt evetuell Leistungsname3/4/5/... hinzu, wo sollen die Zellinhalte hin?
Grundsätzlich kannst Du mit
Code: Alles auswählen
oRangeaddress = ...getcellrangebyname(...).Rangeaddress
Wenn Du also die Zeile(n) und Spalte(n) von Leistungsname1 und Leistungsname2 kennst, kannst Du den Bereich dazwischen auch ermitteln.
Ein Beispieldokument könnte helfen.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: getCellRangeByName: Bereich auswählen und speichern
Hallo,
okay, sorry, wenn den Thread hier vielleicht ein Moderator verschieben könnte, ginge das?
Und hier ein Beispieldokument
Im Prinzip will ich folgendes:
1. Es gibt zwischen Leistungspunkt #1 und #2 verschiedene Punkte. Daneben ist eine zweite Spalte "Verwenden".
2. Diese Punkte sind variabel und werden später noch erweitert.
3. Wenn in "Verwenden" 0 steht, soll der Punkt ignoriert werden, wenn 1 steht, soll er in ein Array gespeichert werden.
Ich scheitere leider schon daran, dass ich den Bereich zwischen Leistungspunkt #1 und #2 auslesen kann.. Zu RangeAdress habe ich zwar Hilfe gefunden, er erkennt auch die Zellennamen (zumindest glaube ich das, weil keine Fehlermeldung erscheint), aber wie ich diese Daten dann abrufen kann, ist mir nicht klar.
okay, sorry, wenn den Thread hier vielleicht ein Moderator verschieben könnte, ginge das?
Und hier ein Beispieldokument
Im Prinzip will ich folgendes:
1. Es gibt zwischen Leistungspunkt #1 und #2 verschiedene Punkte. Daneben ist eine zweite Spalte "Verwenden".
2. Diese Punkte sind variabel und werden später noch erweitert.
3. Wenn in "Verwenden" 0 steht, soll der Punkt ignoriert werden, wenn 1 steht, soll er in ein Array gespeichert werden.
Ich scheitere leider schon daran, dass ich den Bereich zwischen Leistungspunkt #1 und #2 auslesen kann.. Zu RangeAdress habe ich zwar Hilfe gefunden, er erkennt auch die Zellennamen (zumindest glaube ich das, weil keine Fehlermeldung erscheint), aber wie ich diese Daten dann abrufen kann, ist mir nicht klar.
Re: getCellRangeByName: Bereich auswählen und speichern
Hi,
irgendwie verstehe ich dich immer noch nicht
Oder meinst Du mit Array vielleicht einen anderen Zellbereich?
Gruß R
irgendwie verstehe ich dich immer noch nicht
Was soll das, du schreibst Daten in ein Array, ist das Makro abgearbeitet, stehen die Daten also in einer Variablen, die du im Makro gefüllt hast, sehen kannst Du sie dann nicht.funsch hat geschrieben:... soll er in ein Array gespeichert werden.
Oder meinst Du mit Array vielleicht einen anderen Zellbereich?
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: getCellRangeByName: Bereich auswählen und speichern
Hallo,
Ja, die Daten hätte ich dann in einem Array, und mit diesem Array will ich auf einer eigenen Tabelle einen neuen Zellbereich befüllen. Also wenn ich beispielsweise Punkte 1,3,4 und 7 ausgewählt hätte, dann will ich diese in ein Array speichern und in der nächsten Tabelle untereinander hinschreiben. Ich hoffe das ist so verständlich
Ja, die Daten hätte ich dann in einem Array, und mit diesem Array will ich auf einer eigenen Tabelle einen neuen Zellbereich befüllen. Also wenn ich beispielsweise Punkte 1,3,4 und 7 ausgewählt hätte, dann will ich diese in ein Array speichern und in der nächsten Tabelle untereinander hinschreiben. Ich hoffe das ist so verständlich

Re: getCellRangeByName: Bereich auswählen und speichern
Hi,
ich habe das mal etwas anders gelöst.
Anstatt der obersten Zelle eines Bereiches einen Namen zu geben, habe ich den Bereichen selbst, also den Punktgruppen je einen Namen gegeben.
PunkteL1
PunkteL2
Unterhalb habe ich je eine Zeile leer gelassen, aber dem Namen zugeordnet. Wenn eine Zeile zugefügt wird, vergrößert sich der Namesbereich und man kann per Makro drauf zugreifen. Dieses Makro schreibt alle Punkte die mit 1 ausgewählt wurden untereinander in Spalte D bzw. E:
Anbei ein Beispiel.
Gruß R
ich habe das mal etwas anders gelöst.
Anstatt der obersten Zelle eines Bereiches einen Namen zu geben, habe ich den Bereichen selbst, also den Punktgruppen je einen Namen gegeben.
PunkteL1
PunkteL2
Unterhalb habe ich je eine Zeile leer gelassen, aber dem Namen zugeordnet. Wenn eine Zeile zugefügt wird, vergrößert sich der Namesbereich und man kann per Makro drauf zugreifen. Dieses Makro schreibt alle Punkte die mit 1 ausgewählt wurden untereinander in Spalte D bzw. E:
Code: Alles auswählen
Sub S_Copy_selected
dim aSelected1(0) as string
dim aSelected2(0) as string
dim nselected as integer
oRanges = thiscomponent.namedRanges
oRP1 = oRanges.getbyname("PunkteL1").ReferredCells
oRP2 = oRanges.getbyname("PunkteL2").ReferredCells
nSheet = oRP1.RangeAddress.sheet
oSheet = Thiscomponent.sheets.getbyindex(nsheet)
ncounter = 0
for n = 0 to oRP1.rows.count - 1
nselected = oRP1.getcellbyposition(1,n).value
if nselected = 1 then
redim preserve aSelected1(ncounter)
aSelected1(ncounter) = oRP1.getcellbyposition(0,n).string
ncounter = ncounter + 1
endif
next n
ncounter = 0
for n = 0 to oRP2.rows.count - 1
nselected = oRP2.getcellbyposition(1,n).value
if nselected = 1 then
redim preserve aSelected2(ncounter)
aSelected2(ncounter) = oRP2.getcellbyposition(0,n).string
ncounter = ncounter + 1
endif
next n
oTR1 = oSheet.getcellrangebyposition(3,2,3,Ubound(aSelected1)+2)
oTR2 = oSheet.getcellrangebyposition(4,2,4,Ubound(aSelected2)+2)
for i = 0 to oTR1.rows.count - 1
oTR1.getcellbyposition(0,i).formula = aSelected1(i)
next i
for i = 0 to oTR2.rows.count - 1
oTR2.getcellbyposition(0,i).formula = aSelected2(i)
next i
end sub
Gruß R
- Dateianhänge
-
- testdokument_range.ods
- (12.07 KiB) 233-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: getCellRangeByName: Bereich auswählen und speichern
Das ist super
Genau so hab ich mir das vorgestellt, vielen Dank!

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.