🙏 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!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Erste leere Zeile in Spalte ausgeben

Alles zur Programmierung im LibreOffice.
Antworten
Araneus
Beiträge: 4
Registriert: Fr 22. Mär 2024, 11:05

Erste leere Zeile in Spalte ausgeben

Beitrag von Araneus » Mi 10. Apr 2024, 11:53

Moin, moin,
Ich bin neu hier im Forum und kenne mich mit den Regeln nicht gut aus. Ich bedanke mich aber bereits im voraus bei jedem, der mir auch nur ein Stück weiterhelfen kann. Ich reduziere mein Problem auf das absolut Notwendige:
Ich habe eine Calc-Tabelle, suche also eine Lösung für LO-Basic. Wie kann ich mir die erste leere Zeilennummer der Spalte A in der Variablen x ausgeben lassen. In VBA-Excel lautet die Anweisung so:
x = activesheet.cells(rows.count, 1).End(xlUp).row +1
Ich weiß, für Könner ist diese Aufgabe pippifax, aber ich scheitere daran. Nochmals vielen Dank für jede Hilfe.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von karolus » Mi 10. Apr 2024, 12:25

Hallo
Schreib im Kopf des Moduls:

Code: Alles auswählen

Option VBASupport 1
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Araneus
Beiträge: 4
Registriert: Fr 22. Mär 2024, 11:05

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von Araneus » Do 11. Apr 2024, 09:11

Hab ich getan! Trotzdem abwechselnd Fehlermeldungen: Laufzeitfehler 12: activesheet, Laufzeitfehler 423: Sheets. Was ist in meinem Code falsch? Als Ergebnis müsste die MsgBox die Zeilen-Nr. ausgeben. P.S.:Ich benutze LibreOffice 6.4.7.2

Option Explicit
Option VBASupport 1
Sub LetzteZeilennummerErmitteln()
Dim doc as object
Dim sheet as object
Dim row as objekt
Dim cell as object
Dim lzei as Integer ' lzei = Letzte Zeile
Doc = ThisComponent
Sheet = Doc.Sheets(0) ’ 1.Tabellenblatt
lzei = activesheet.cells(rows.count, 1).End(xlUp).row +1
'MsgBox”Die letzte benutzte Zeile ist: ” & lzei
MsgBox lzei
MsgBox "Toll – funktioniert"
End Sub

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von karolus » Do 11. Apr 2024, 11:02

Hallo



Von deiner Beschreibung her würde ich vermuten, das zur Ausführungzeit etwas anderes als ein Calc-dokument im Focus ist… ??

ps. hat zwar mit der Fehlermeldung nichts zu tun, aber die beiden Zeilen:

Code: Alles auswählen

Doc = ThisComponent
Sheet = Doc.Sheets(0) ' 1.Tabellenblatt
sind komplett wirkungslos!!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von nitja » Sa 13. Apr 2024, 00:45

Araneus hat geschrieben:
Mi 10. Apr 2024, 11:53
… für jede Hilfe … [die] … mir auch nur ein Stück weiterhelfen kann.
Klingt danach, dass Du wirklich in einer Klemme steckst. (… und ich weiß, wie sich das anfühlt)
Und da es hier nicht wirklich weiter zu gehen scheint, mag ich versuchen Dir da 'raus zu helfen, obwohl ich Excel & VBA seit gut 20 kaum und seit 15 Jahren überhaupt nicht mehr angefasst habe.

Deshalb kann ich auch nicht im Detail nachvollziehen, was das
Araneus hat geschrieben:
Mi 10. Apr 2024, 11:53
x = activesheet.cells(rows.count, 1).End(xlUp).row +1
tatsächlich bewerkstelligt.

Geht es wirklich um "die erste leere Zeile"? … bzw., was ist das?
… die erste (also mit der niedrigsten Zeilennummer) leere Zelle "in Spalte"?
… oder die letzte (also mit der höchsten Zeilennummer), die nicht leer ist?
Das macht einen entscheidenden Unterschied, wenn in der Kolonne gefüllter Zellen zwischendurch auch mal eine leer sein kann. Oder ist das ausgeschlossen?
Araneus hat geschrieben:
Mi 10. Apr 2024, 11:53
… Zeilennummer der Spalte A in der Variablen x …
Konkret "Spalte A" oder irgendeine zu wählende?
Und braucht's dafür ein Makro, oder könnte das "x" auch in irgendeiner unbeteiligten Zelle als Ergebnis einer Formel erscheinen?
Araneus hat geschrieben:
Mi 10. Apr 2024, 11:53
… x = activesheet. …
Meinst Du die Tabelle, die aktuell den Focus hat, oder (wie im späteren post) die erste Tabelle im "Dokument" (der .ods-Datei)?
Beides (leicht) möglich, aber eben unterschiedlich.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

Araneus
Beiträge: 4
Registriert: Fr 22. Mär 2024, 11:05

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von Araneus » Mo 15. Apr 2024, 11:15

Moin, moin nitja,
die Codezeile habe ich von VBA übernommen, wo sie auch funtzt. ich brauche den Algorithmus jedoch für LibreOffice Basic, und da funktioniert sie eben nicht, obwohl ich über meiner Prozedur Option VBASupport 1 gestellt habe. Ich benötige den Zeilenindex der 1. freien Zelle oder Zeile unter meinen Einträgen in Spalte A. Ich habe nur Spalte A. In dieser habe ich (als Beispiel) 3 Einträge, von Zeile A bis C. Als Ergebnis des Algorithmus müsse ich den Zeilenindex 3 erhalten, denn das ist die erste leere Zeile in Spalte A. Mir würde auch ein Algorithmus weiterhelfen, der mir die letzte benutzte Zelle/Zeile in Spalte A zurückgibt - dann würde ich einfach 1 dazu zählen (x = x+1). Bis hierhin vielen Dank für deine Hilfe!!!

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Nummer der ersten leeren Zeile unter einem gefüllten Bereich ermitteln

Beitrag von nitja » Mo 15. Apr 2024, 14:15

Araneus hat geschrieben:
Mo 15. Apr 2024, 11:15
… die Codezeile habe ich von VBA übernommen, wo sie auch funtzt. ¹⁾
… obwohl ich über meiner Prozedur Option VBASupport 1 gestellt habe. ²⁾
… den Zeilenindex der 1. freien Zelle … unter meinen Einträgen … aha, also nix "Leere Zeile" - Zeilennummer
Ich habe nur Spalte A. Was die Unterscheidung hier drüber unnötig macht, nachdem das geklärt ist
¹) Hatte ich schon geschrieben, dass mir das nix nutzt?
²) Die Kompatibilität, die mit LOs VBA-Support zu erreichen ist, beschränkt sich auf Syntax und vordefinierte Konstanten der Sprache an sich.
Sie bedeutet nicht, dass das Objektmodell von LOs "Dokumenten", das dem von M$-Office deutlich überlegen ist, auf letzteres umgestellt würde und aus LO einen M$O-Clone machen würde.
·
24·04·15 LetzteZeilennummerErmitteln für 'Araneus'.ods
(11.89 KiB) 125-mal heruntergeladen
·
Mein Beispiel würde auch mit (mehreren|vielen|sehr vielen) Spalten funktionieren. Nur wenn in dem gefüllten Bereich größere überlappende leere Lücken wären, bräuchte es weitere Vorkehrungen.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von mikele » Mo 15. Apr 2024, 17:14

Hallo,

Code: Alles auswählen

Option VBASupport 1
Sub LetzteZeilennummerErmitteln()
Dim doc as object
Dim sheet as object
Dim row as objekt
Dim cell as object
Dim lzei as Integer ' lzei = Letzte Zeile
lzei = activesheet.cells(rows.count, 1).End(xlUp).row +1
'MsgBox”Die letzte benutzte Zeile ist: ” & lzei
MsgBox lzei
MsgBox "Toll – funktioniert"
End Sub
funktioniert bei mir. (LO7.0.4)
Gruß,
mikele

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von mikele » Mo 15. Apr 2024, 19:26

Hallo,
wenn es darum geht die erste Zelle nach der letzte benutzten Zelle in Spalte A zu finden (wenn zwischendurch auch ein paar Lücken sind) in StarBasic

Code: Alles auswählen

	'Zugriff auf die 1. Tabelle
	oSheet=ThisComponent.Sheets(0)
	'Zugriff auf die 1. Spalte
	oSpalte=oSheet.Columns(0)
	'finden der Adressbereiche mit leeren Zellen
	aLeer=oSpalte.queryEmptyCells.RangeAddresses
	'erste Zeile des letzten Bereiches mit leeren Zellen
	n=aLeer(uBound(aLeer)).StartRow
oder als Zweizeiler komprimiert in Python

Code: Alles auswählen

def erste_freie_zeile():
    oDoc = XSCRIPTCONTEXT.getDocument()
    n = oDoc.Sheets[0].Columns[0].queryEmptyCells().RangeAddresses[-1].StartRow
Einen klitzekleinen Schönheitsfehler hat die Variante: sie geht schief, wenn die allerletzten Zeile (A1048576) nicht leer ist und liefert einen Fehler, wenn keine leere Zellen da sind.
Gruß,
mikele

Araneus
Beiträge: 4
Registriert: Fr 22. Mär 2024, 11:05

Re: Erste leere Zeile in Spalte ausgeben

Beitrag von Araneus » Do 18. Apr 2024, 09:55

Moin, moin mikele,
Juchuuuuuuuuuuuuu! Dein Code hat mir weitergeholfen. Mein Code ist vielleicht etwas dilettantisch und holperig - aber er funktioniert, und das ist die Hauptsache. Mein Code ermittelt die letzte belegte Zelle/Zeile in einer Spalte und übergibt den Wert an die Variable lz. Zu der muss ich jetzt nur noch den Wert 1 hinzuaddieren (lz = lz +1), und so kann ich auf die erste freie Zelle/Zeile zugreifen:
...
Dim doc as Object
Dim zeile as Object
Dim leer as Object
Dim lz as Object
doc = ThisComponent.sheets(0)
zeile = doc.Columns(0)
' leere Bereiche finden:
leer =zeile.queryemptycells
lz = leer(leer.count -1)
' Letzte belegte Zeile/Zelle:
msgbox "Die letzte belegte Zeile ist " & lz.rangeaddress.startrow -1
End Sub
Allen, die versucht haben, einem Greenhorn weiterzuhelfen, herzlichen Dank für eure Mühe und Geduld. Ihr kommt in den Himmel! Da ich hier neu bin im Forum, weiß ich nicht, wie man mein Problem als [gelöst] kennzeichnet, aber vielleicht kann dies jemand für mich machen. Danke!


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.



Antworten