Seite 1 von 2

Calc Im Dialog letzte Zelle auslesen und im Textfeld ausgeben

Verfasst: Sa, 24.09.2022 13:32
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

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

Verfasst: Sa, 24.09.2022 14:11
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

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

Verfasst: Sa, 24.09.2022 14:20
von kalle05
Hallo Karolus
ja, wenn das so einfach wäre. Mit anderen Worten: Dein Vorschlag funktioniert nicht.
GrußKalle

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

Verfasst: Sa, 24.09.2022 14:40
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.

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

Verfasst: Sa, 24.09.2022 14:44
von kalle05
Ja, hast Recht.
Die Fehlermeldung lautet: Es ist eine Exception aufgetreten.

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

Verfasst: Sa, 24.09.2022 14:48
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.

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

Verfasst: Sa, 24.09.2022 14:51
von kalle05
Nachdem ich bei "D" die 1 weggenommen habe.
nNeueDatSatz = oSheet.getCellRangeByName("D" & iLetzteZeile).value
Gruß
Kalle

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

Verfasst: Sa, 24.09.2022 15:00
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.

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

Verfasst: Sa, 24.09.2022 15:02
von kalle05
Du scheinst ja noch nicht einmal das Fahrtrenbuch von Tom zu kennen.

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

Verfasst: Sa, 24.09.2022 15:10
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.

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

Verfasst: Mo, 26.09.2022 08:16
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

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

Verfasst: Mo, 26.09.2022 09:40
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) 77-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

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

Verfasst: Mo, 26.09.2022 12:29
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

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

Verfasst: Mo, 26.09.2022 12:45
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

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

Verfasst: Mo, 26.09.2022 13:29
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.