Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

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

Moderator: Moderatoren

kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Hallo Leute
ich sitze seit Tagen an einer Lösung und finde keine..
Ich möchte beim Aufrufen eines Dialogs ein Feld mit der letzten, beschriebenen Zelle einer Spalte anzeigen lassen.

In Anlehnung an das Fahrtenbuch dachte ich dies würde klappen, doch auch diese Formel funktioniert nicht in meinem Fall. Hier ein Auszug meiner Versuche

Code: Alles auswählen

 Dim oDlg1 as Object
  Dim oDoc as Object
 
  oDlg1 = CreateUnoDialog( DialogLibraries.Passwort.DlgHauptdialog)
  oDlg1.Model.Step = 1
  nNeueDatSatz = oSheet.getCellRangeByName("D1"& iLetzteZeile).value 
  oDlg1.getcontrol("kmAbf").value = oSheet.getCellRangeByName("D"& nNeueDatSatz).value
Was mache ich falsch. Eine Hilfstabelle, wie im Fahrtenbuch Tabelle Daten, wollte ich nicht nutzen.
Ihr könnt mir sicherlich weiterhelfen und bedanke mich schon im Voraus.
Kalle
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

Hallo

Code: Alles auswählen

nNeueDatSatz = oSheet.getCellRangeByName("D1"& iLetzteZeile).value 
Das "D1" ist offensichtlicher Blödsinn, das incrementiert die gewünschte zeilennummer um den Wert 10 oder 100 oder 1000 usw. … lass die 1 weg.

ps.: Deine Signatur ist albern
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Hallo Karolus
ja, wenn das so einfach wäre. Mit anderen Worten: Dein Vorschlag funktioniert nicht.
GrußKalle
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

Dann solltest du mal deinen Kram selbst debuggen***, mit der Aussage
funktioniert nicht
kann dir da keiner helfen.

***vielleicht mal mit print iLetzteZeile nachschauen ob das die gewünschte ist.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Ja, hast Recht.
Die Fehlermeldung lautet: Es ist eine Exception aufgetreten.
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

kalle05 hat geschrieben: Sa, 24.09.2022 14:44 Ja, hast Recht.
Die Fehlermeldung lautet: Es ist eine Exception aufgetreten.
und wo ist die aufgetreten ???
Bitte den Quellcode mit der markierten Zeile.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Nachdem ich bei "D" die 1 weggenommen habe.
nNeueDatSatz = oSheet.getCellRangeByName("D" & iLetzteZeile).value
Gruß
Kalle
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

Dann steckt wohl in iletzteZeile ein falscher Wert|String … du bist derjenige der das mit einem print iletzteZeile herausfinden kannst.

Ich bin jetzt raus, ich hab keine Lust einem Vollhonk jeden Popel aus der Nase zu ziehen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Du scheinst ja noch nicht einmal das Fahrtrenbuch von Tom zu kennen.
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

Nee kenn ich nicht, muss ich auch nicht, und würde hier keinen Furz helfen, weil du derjenige bist der es irgendwie verbockt hat, und nicht das Fahrtenbuch als Vorlage.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Toxitom »

hey Kalle,

da wirste Du halt schon ein wenig mehr Code posten müssen.

Die "Exception" kann z.B. auch dann auftreten, wenn "oSheet" nicht oder nicht korrekt definiert ist.

Der Code des Fahrtenbuchs ist allerdings auch schon ziemlich alt .. dort aber sind die Tabellenblätter in einer eigenen Funktion definiert. Wenn Du davon abweichend eigene Ideen realisiert, dann versuche auch zu lernen, wie das alles zusammenhängt.

Und... wie Karolus schon durchaus korrekt festgestellt hat: Nutze selbst mögliche Analysemethoden (print, msgox, xray) um auftretende Fehler einzugrenzen und selbst zu analysieren.

Ich kann auch nicht sehen, was in "iLetzteZeile" steht oder was "oSheet" beinhaltet....

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

So nun ein wenig ausführlicher.
Ich als Lehrnender kann natürlich nicht wissen, was für Spezifikationen genannt werden müssen, die nicht aus dem Code-Schniptsel ersichtlich sind.
Das Fahrtenbuch, häufig genug im Forum genannt, dient unter anderem dazu, die gefahrenen Kilometer zu ermitteln. Es werden für die Berechnung dieser Kilometer zwei Nummernfelder benötigt. Dabei erscheint zunächst der Anfangskilometerstand im Dialog als Nummernfeld ( kmAbf) durch Auslesen der letzten Zelle einer Spalte.
Genau dieses Erscheinen will ich in meinem Nummernfeld der Spalte D erreichen.

Aufgrund der vielen Zugriffe scheint ja auch ein deutliches Interesse zu bestehen.


Anbei ein Beispiel.
Neu.ods
(19.89 KiB) 73-mal heruntergeladen
Hier der Link für das Fahrtenbuch:
viewtopic.php?f=18&t=1553
Hallo Tom,
ich habe MRI installiert und versuche mich daran. Wie gesagt, ich versuche. Etwas sinnhaftes ist für mich nicht herausgekommen, so dass ich mich an das Forum gewandt habe.
Gruß Kalle
:lol: Win 10
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Toxitom »

Hey Kalle,

hmm, na ja, da wirst Du Dich schon noch ein wenig tiefer mit der kompletten Materie beschäftigen müssen.

Ja, es ist möglich, die letzet benutzte Zeile auszulesen - aus einem definierten Zellbereich oder aus dem kompletten Tabellenblatt.

Dann brauchst Du einen Cursor (Tabellenblatt-Cursor) und Erfahrung im Arbeiten mit Indices und Bereichen.

Der Code würde dann wie folgt aussehen (habe Deinen Code im Module 1 in der Bibliothek "Password" verwendet und ergänzt):

Code: Alles auswählen

Dim oDlg1 as Object
Dim oDoc as Object, oSheet as Object
Dim Cell

 Sub oDlg1Dialog_aufrufen()
  Dim oCur as variant
  dim iLetzteZeileIndex as long
  
  DialogLibraries.LoadLibrary( "Passwort" )
  oDlg1 = CreateUnoDialog( DialogLibraries.Passwort.DlgHauptdialog)
  oDlg1.Model.Step = 1

  oDoc = ThisComponent
  oSheet = ThisComponent.sheets.getbyName("Neu")
   
  REM Blattcursor erzeugen
  oCur = oSheet.createCursor()
  REM zur letzen benutzen Zelle gehen
  oCur.gotoEndofUsedArea(false)
  REM letzte benutzte Zeile
  iLetzteZeileIndex = oCur.RangeAddress.endRow
 
  'Abfahrt = oSheet.getCellRangeByName("D"& iLetzteZeileIndex +1).value 
  oDlg1.getcontrol("kmAbf").value = oSheet.getCellRangeByName("D"& iLetzteZeileIndex +1).value	  
  oDlg1.Execute()  
End Sub
Der Blattcursor verwendet immer die letzte benutzte Zeile - solltest Du also irgendetwas unterhalb der aktuellen Zeile geschrieben haben, läuft das natürlich schief;) Und natürlich auch bei einer leeren Tabelle - da würde dann ja die Überschrift genutzt werden. Also, da musste noch einiges daran arbeiten;)
Aber so siehste erst mal wie das umsetzbar wäre...

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
kalle05
**
Beiträge: 38
Registriert: So, 19.10.2014 18:13

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von kalle05 »

Hallo Tom,
erst einmal vielen Dank für deine Hilfe.
Mit dem Cursor habe ich schon gearbeitet, nur auf diesen Trichter bin ich nicht gekommen.
Fremd war mir diese Zeile, aber im Nachhinein verständlich.

Code: Alles auswählen

iLetzteZeileIndex = oCur.RangeAddress.endRow
Der Code funktioniert tadellos und ich kann mich nun an die Arbeit machen.
Schön, dass es Leute wie dich gibt, die mit einem Anfänger Geduld aufbringen.
Schönen Gruß
Kalle
:lol: Win 10
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Beitrag von Karolus »

Ich bringe auch Geduld mit für Leute die KONSTRUKTIV mitarbeiten, und
auf den Trichter
mit dem Cursor kannste mal im noch taufrischen Thema direkt unterhalb nachlesen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten