Letzte benutzte Zeile einer Spalte ermitteln?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

J.BORGER2

Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von J.BORGER2 » Fr, 10.08.2018 12:43

Hallo,

Ich muß die letzte benutzte Zeile einer Spallte ermitteln und übergeben leider komme ich auf keine Lösung:

Mit folgendenm Code bekomme ich nur die letzte benutzte Zeile einer ganzem Tabelnblatt übergeben:

oCursor = thisComponent.sheets(0).createCursor()
oCursor.goToEndOfUsedArea(False)
msgbox oCursor.getRangeAddress.EndRow

Wie stelel ich dass am besten an wenn ich die Funktion nur für eine Spalte brauche?

mikeleb
******
Beiträge: 719
Registriert: Fr, 09.12.2011 16:50

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von mikeleb » Fr, 10.08.2018 13:17

Hallo,
z. B. so

Code: Alles auswählen

	odoc=Thiscomponent.Sheets(0)
	ozeile=odoc.Columns(0)
	'leere Bereiche finden
	oleer=ozeile.queryemptycells
	oletzter=oleer(oleer.count-1)
	'letzte nichtleere Zeile
	msgbox oletzter.rangeaddress.startrow-1
Gruß,
mikeleb

J.BORGER2

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von J.BORGER2 » Di, 14.08.2018 07:23

TOP DANKE!!
oletzter ist ein long Typ?
Müßte das in eine integer wandeln...

Wie stelle ich das am besten an?

mikeleb
******
Beiträge: 719
Registriert: Fr, 09.12.2011 16:50

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von mikeleb » Di, 14.08.2018 17:49

Hallo,
Müßte das in eine integer wandeln...
Wieso?
oletzter ist ein long Typ?
Nein, oletzter ist ein Objekt (der letzte leere Bereich)!
Wenn du die Nummer der letzten benutzten Zeile explizit als Integer haben möchtest, kannst du sie zu Beginn so deklarieren.

Code: Alles auswählen

DIM iLetzteZeile AS Integer
...
iLetzteZeile=oletzter.rangeaddress.startrow-1 
Gruß,
mikeleb

J.BORGER2

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von J.BORGER2 » Mi, 15.08.2018 08:03

Danke dir!!! Ja war ein Objekt.
Soory bin recht neu auf dem Gebiet unterwegs...

Eine andere Frage noch:

Muss einen Aktiven Bereich in ein neues Tabellenblatt kopieren... in Exel habe ich das mit folgenden Code gemacht:


Private Sub CommandButton1_Click()

Worksheets("RAM").Range("A1:BW300").ClearContents

'Ab Zeile 2 alle gefilterten Zeilen bis Spalte "D" kopieren
' -> das "D" bitte an Deine Tabelle anpassen
ActiveSheet.Range("A2:BW" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy

'...und ab "A2" in Tabelle2 einfügen
Worksheets("RAM").Range("A1").PasteSpecial

MsgBox "Immer nur die erste Zeile 2 wird gedruckt!"

End Sub


Jetzt hab ich das etwas umgewandelt aber geht noch nicht weil es nicht mit Openoffce kompatiebel ist :-(

Lösung bis jetzt:

oCalc = thisComponent
oSheet = oCalc.Sheets().getByName("RAM")
oCellRange = osheet.getCellRangeByName("A1:BW300")

'Ab Zeile 2 alle gefilterten Zeilen bis Spalte "D" kopieren
' -> das "D" bitte an Deine Tabelle anpassen
ActiveSheet.Range("A2:BW" & ActiveSheet.UsedRange.Rows.Count). _
SpecialCells(xlCellTypeVisible).Copy

'...und ab "A2" in Tabelle2 einfügen
Worksheets("RAM").Range("A1").PasteSpecial

MsgBox "Immer nur die erste Zeile 2 wird gedruckt!"

End Sub

Von der Seite (http://www.dannenhoefer.de) sind das feste Bereiche... aber kein aktiver bereich.... schaffe die ableitung bis jetzt noch nicht :

oDocument = ThisComponent
oSheet1 = oDocument.Sheets().getByName("Tabelle1")
oSheet2 = oDocument.Sheets().getByName("RAM")
oQuelleRange=oSheet1.getCellRangeByPosition(0,0,3,4)
oQuellRangeAddresse = oQuelleRange.getRangeAddress
oZiel = oSheet2.getCellByPosition(0,0)
oZielCellAdresse=oZiel.getCellAddress
oSheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse)

Stephan
********
Beiträge: 10547
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von Stephan » Mi, 15.08.2018 09:35

Jetzt hab ich das etwas umgewandelt aber geht noch nicht weil es nicht mit Openoffce kompatiebel ist :-(
bei mir erweist sich AOO 4.1.5 so kompatibel dass es sogar ohne jede Anpassung läuft, allein durch Hinzufügen der Kompatibilitätsoption (Option VBASupport 1), was AOO auch automatisch tut, wenn man die xls-DAtei direkt in AOO öffnet.

Code: Alles auswählen

Option VBASupport 1
Private Sub CommandButton1_Click()

 Worksheets("RAM").Range("A1:BW300").ClearContents

 'Ab Zeile 2 alle gefilterten Zeilen bis Spalte "D" kopieren
 ' -> das "D" bitte an Deine Tabelle anpassen
 ActiveSheet.Range("A2:BW" & ActiveSheet.UsedRange.Rows.Count). _
 SpecialCells(xlCellTypeVisible).Copy

 '...und ab "A2" in Tabelle2 einfügen
 Worksheets("RAM").Range("A1").PasteSpecial

 MsgBox "Immer nur die erste Zeile 2 wird gedruckt!"

End Sub

Gruß
Stephan

Gast

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von Gast » Mi, 15.08.2018 10:05

Hallo Stephan,

habe die Kompatibilitätsoption auch aktiv und es geht solange ich die Datei nicht erneut öffne. Wenn ich dann die Datei erneut öffne bekomme ich folgende Fehlermedung:

BASIC-Laufzeitfehler
Objektvariabele nicht belegt.

Mache ich in den Code eine leerzeile läuft es wieder bis ich die Datei erneut öffne! Dann selbe meldung.

Gast

Re: Letzte benutzte Zeile einer Spalte ermitteln?

Beitrag von Gast » Mi, 15.08.2018 11:47

Hallo weiß nicht was ich falsch gemacht habe aber jetzt geht es.

Antworten