🙏 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. 🤗
Erste leere Zeile in Spalte ausgeben
Erste leere Zeile in Spalte ausgeben
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.
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.
Re: Erste leere Zeile in Spalte ausgeben
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Erste leere Zeile in Spalte ausgeben
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
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
Re: Erste leere Zeile in Spalte ausgeben
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:
sind komplett wirkungslos!!
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
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Erste leere Zeile in Spalte ausgeben
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
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?
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?
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
Re: Erste leere Zeile in Spalte ausgeben
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!!!
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!!!
Nummer der ersten leeren Zeile unter einem gefüllten Bereich ermitteln
¹) Hatte ich schon geschrieben, dass mir das nix nutzt?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
…
²) 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.
· ·
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
Re: Erste leere Zeile in Spalte ausgeben
Hallo,
funktioniert bei mir. (LO7.0.4)
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
Gruß,
mikele
mikele
Re: Erste leere Zeile in Spalte ausgeben
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
oder als Zweizeiler komprimiert in Python
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.
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
Code: Alles auswählen
def erste_freie_zeile():
oDoc = XSCRIPTCONTEXT.getDocument()
n = oDoc.Sheets[0].Columns[0].queryEmptyCells().RangeAddresses[-1].StartRow
Gruß,
mikele
mikele
Re: Erste leere Zeile in Spalte ausgeben
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!
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.