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...