Seite 1 von 1
[Gelöst]Nächste freie Zelle in Tabelle suchen
Verfasst: Mo 6. Feb 2023, 07:15
von djchaques
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?
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Mo 6. Feb 2023, 15:58
von F3K Total
Klar,
programmiere dir einfach ein Makro, geht auf jeden Fall.
Grüsse
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Mi 8. Feb 2023, 06:10
von djchaques
okay... eigentlich war das wörtlich genommnen die Antwort auf meine Frage.
Aber ich wollte eigentlich wissen, wie das Makro aussehen muss ...
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Mi 8. Feb 2023, 10:05
von mikele
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
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Mi 8. Feb 2023, 13:25
von mikele
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
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Do 9. Feb 2023, 07:09
von djchaques
Siehst du. Das hätte ich nie alleine hinbekommen. Das werde ich zeitnahe ausprobieren und mich abschließend melden.
Vielen Dank.
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Do 9. Feb 2023, 13:43
von djchaques
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 !
Re: Nächste freie Zelle in Tabelle suchen
Verfasst: Do 9. Feb 2023, 14:29
von mikele
Hallo,
das Makro ist bewusst allgemein gehalten, sodass es für beliebige Bereiche funktioniert. Daher ist es etwas aufwändiger...