❤️ Das OpenOffice-Forum benötigt jetzt Ihre Unterstützung ❤️
Wir brauchen dringend Ihre Spende, um die laufenden Kosten für den Betrieb des OpenOffice-Forums in den nächsten 12 Monaten decken zu können.
🍀 DANKE an die zahlreichen OO-Nutzer, die bereits gespendet haben! 🍀
CALC ist die Tabellenkalkulation, die Sie immer wollten.
-
djchaques
- Beiträge: 6
- Registriert: Mi 27. Mär 2019, 11:05
Beitrag
von djchaques » Mo 6. Feb 2023, 07:15
Hallo Makro-Profis.
(Ähnliche Themen habe ich schon gefunden, leider passt es noch nicht ganz)
Vereinfacht dargestellt:
Ich habe eine Tabelle von A1 bis D4 (also 4x4 Zellen)
Und einen Wert in F1
Frage:
Ich möchte den Wert aus F1 in die nächste freie Zelle meiner o.g. Tabelle eintragen lassen.
In der Reihenfolge A1 - B1 - C1 -D1 - A2 - B2 - C2 - D2 - A3 - usw. - also immer zeilenweise gefüllt und danach zur nächsten Zeile springen.
Bekommt man das hin?

-
F3K Total
- Beiträge: 1001
- Registriert: Mo 1. Aug 2011, 00:03
Beitrag
von F3K Total » Mo 6. Feb 2023, 15:58
Klar,
programmiere dir einfach ein Makro, geht auf jeden Fall.
Grüsse
-
djchaques
- Beiträge: 6
- Registriert: Mi 27. Mär 2019, 11:05
Beitrag
von djchaques » Mi 8. Feb 2023, 06:10
okay... eigentlich war das wörtlich genommnen die Antwort auf meine Frage.
Aber ich wollte eigentlich wissen, wie das Makro aussehen muss ...
-
mikele
- Beiträge: 717
- Registriert: Sa 23. Jul 2011, 22:09
Beitrag
von mikele » Mi 8. Feb 2023, 10:05
Hallo,
anbei mal eine Variante. Die auskommentierten Zeilen sind eine zweite Variante, um die erste freie Zelle zu finden.
Code: Alles auswählen
Sub Main
odoc=ThisComponent
oTab=odoc.Sheets(0)
oZiel=oTab.getCellRangeByName("A1:D4")
' aleer=oZiel.queryEmptycells.rangeAddresses
' zeile=oziel.rangeaddress.endrow
' spalte=oziel.rangeaddress.endcolumn
' for i=0 to ubound(aleer)
' if aleer(i).startrow<zeile then
' zeile=aleer(i).startrow
' spalte=aleer(i).startcolumn
' elseif aleer(i).startrow=zeile and aleer(i).startcolumn<spalte then
' spalte=aleer(i).startcolumn
' end if
' next
gefunden=false
z_von=oZiel.rangeaddress.startrow
z_bis=oZiel.rangeaddress.endrow
s_von=oZiel.rangeaddress.startcolumn
s_bis=oZiel.rangeaddress.endcolumn
zeile=z_von-1
do
zeile=zeile+1
spalte=s_von-1
do
spalte=spalte+1
if oTab.getCellByPosition(spalte,zeile).getType=0 then
gefunden=true
end if
loop until gefunden=true or spalte=s_bis
loop until gefunden=true or zeile=z_bis
msgbox "Zeile: " & zeile & "Spalte: " & spalte
if gefunden=true then
oTab.getCellByPosition(spalte,zeile).value=oTab.getCellRangeByName("F1").Value
else
msgbox "Keine freie Zelle vorhanden."
end if
End Sub
Gruß,
mikele
-
mikele
- Beiträge: 717
- Registriert: Sa 23. Jul 2011, 22:09
Beitrag
von mikele » Mi 8. Feb 2023, 13:25
Hallo,
eine noch etwas kürzere Variante um die erste leere Zelle zu ermitteln:
Code: Alles auswählen
ozeilen=oziel.rows
oleer=oZiel.queryEmptycells
i=0
do until oleer.queryintersection(ozeilen(i).rangeaddress).count>0 or i>ozeilen.count
i=i+1
loop
zeile=oleer.queryintersection(ozeilen(i).rangeaddress).rangeaddresses(0).startrow
spalte=oleer.queryintersection(ozeilen(i).rangeaddress).rangeaddresses(0).startcolumn
Gruß,
mikele
-
djchaques
- Beiträge: 6
- Registriert: Mi 27. Mär 2019, 11:05
Beitrag
von djchaques » Do 9. Feb 2023, 07:09
Siehst du. Das hätte ich nie alleine hinbekommen. Das werde ich zeitnahe ausprobieren und mich abschließend melden.
Vielen Dank.
-
djchaques
- Beiträge: 6
- Registriert: Mi 27. Mär 2019, 11:05
Beitrag
von djchaques » Do 9. Feb 2023, 13:43
Perfekt. Hat alles wunderbar funktioniert.
Hatte noch eine Schaltfläche eingbaut und der Wert wird prima automatisch übernommen.
(Das Bestätigungsfenster habe ich mir weg gelöscht. So ist es nur ein Mausklick.)
D A N K E !
-
mikele
- Beiträge: 717
- Registriert: Sa 23. Jul 2011, 22:09
Beitrag
von mikele » Do 9. Feb 2023, 14:29
Hallo,
das Makro ist bewusst allgemein gehalten, sodass es für beliebige Bereiche funktioniert. Daher ist es etwas aufwändiger...
Gruß,
mikele