🙏 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. 🤗

Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Alles zur Programmierung im LibreOffice.
Antworten
milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von milmac » Di 5. Sep 2023, 22:27

Hallo
In allen Varianten, auch den allereinfachsten und mit jungfräulicher calc-Tabelle, gibt die For Each Schleife sofort den Fehler

Code: Alles auswählen

"Unzulässiger Wert oder Datentyp
Datentypen unverträglich"
aus, ohne überhaupt weiterzukommen. Grundlage ist untenstehender Makrocode. Hab schon über Stunden mit GPT und klassischer Suchfunktion versucht einen Fehler zu finden. Weiß hier jemand mehr?

Code: Alles auswählen

Sub Formatierung()
    Dim Doc As Object
    Dim PlanSheet As Object
    Dim PlanRange As Object
    Dim PlanCell As Object
    
    ' Die aktive Arbeitsmappe (Dokument) erhalten
    Doc = ThisComponent
    
    ' Tabellenblatt "Plan" erhalten
    PlanSheet = Doc.Sheets.getByName("Plan")
    
    ' Bereich in "Plan" von A1 bis E5 erhalten
    PlanRange = PlanSheet.getCellRangeByName("A1:E5")
    
    ' Schleife durch den gesamten Plan-Bereich
    For Each PlanCell In PlanRange
        ' Prüfen, ob der Inhalt der Zelle ein gültiges Datum ist
        If IsDate(PlanCell.getValue()) Then
            ' Hier können Sie Ihre Formatierungs- und Beschriftungslogik einfügen
            ' Beispiel: PlanCell.setValue("Gültiges Datum gefunden")
        End If
    Next PlanCell
End Sub

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

Re: Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von karolus » Mi 6. Sep 2023, 05:15

Warum glaubst du ChatGpt?
Wozu gibts schon seit Ewigkeiten mri zum inspizieren

Code: Alles auswählen

def style_Dates_bad(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    cell_range = doc.Sheets.Plan["A1:E5"]
    # 1→value, 2→Datum, 4 → Text … siehe **CellFlags**
    # https://www.openoffice.org/api/docs/common/ref/…
    # …com/sun/star/sheet/XCellRangesQuery.html#queryContentCells
    dates = cell_range.queryContentCells(2)
    dates.CellStyle = 'Schlecht'
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Re: Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von milmac » Mi 6. Sep 2023, 10:40

Danke. Ich denke, glauben tu ich wenn's funkioniert, leider bin ich im Makroprogrammieren ziemlich Anfänger. GPT hat mir schon einige funktionierende Skripte erstellt.
Hier scheitert es direkt an der versuchten For-Each-iterierenden Prüfung eines Bereichs auf Datumswerte.
Der gelieferte MRI-Check(?) übersteigt auch meine Verstehensgrenzen.

Ich wäre dankbar über Info, wie eine funktionierende Überprüfung des Bereichs bzw funktionierendes Auffinden von Datumszellen im Format TT.MM.JJ geschrieben sein muss.
systeminfo übrigens: libreoffice 1:7.3.7-0 auf ubuntu 0.22.04.3

PS-ich hab die MRI-Extension zwar installiert, möglicherweise mit Fehler da LO während der Installation stehen blieb ("LO reagiert nicht") - das zwei Mal. MRI taucht dann in den Extensions auf aber ich finde keinerlei Ansatz, um darauf zuzugreifen, weder aus dem Makrofenster noch aus dem Tabellenfenster heraus.

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

Re: Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von karolus » Mi 6. Sep 2023, 13:08

Hallo

In der GUI hat mri zwei Einträge via →→Extras→Plugins…

Aus der Basic-IDE heraus klickst du einmal im Objektkatalog auf →→Meine Makros→→MRILIB
und schon kannst du im Editor zb.

Code: Alles auswählen

mri thiscomponent
benutzen.

Das oben gepostete Script ist python-code, da empfehle ich für den Anfang apso.oxt zum Verwalten von Python in Bezug auf Libreoffice
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

milmac
Beiträge: 7
Registriert: Mi 7. Aug 2019, 15:30

Re: Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von milmac » Mi 6. Sep 2023, 21:11

Hallo Karolus
Danke, das habe ich gefunden - aber es übersteigt meine Möglichkeiten.
Ich kann die Arbeitsweise von Libreoffice-Basic im Makro zwar einigermaßen nachvollziehen, aber keine Syntax selbst entwickeln.
Daher ist die Hilfe durch ai eine Offenbarung, aber leider , wie hier ja ersichtlich wird, nicht perfekt. Ich wäre froh um weitere Hinweise, wie der beabsichtigte Teilschritt programmiert werden muss, damit er funktioniert: Durch einen Bereich iterieren, um alle Zellen mit dem Datumsformat TT.MM.JJ ausfindig zu machen (und dann weiteren Teilschritten zur Verfügung zu stellen).
Schöne Grüße und danke, wie auch immer.

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

Re: Ganz grundlegender fehler mit For Each-Schleife: datentyp unverträglich

Beitrag von karolus » Mi 6. Sep 2023, 23:11

Oben ist der komplette funktionierende Quellcode und mit Apso ist die »Installation« dieses Codes zumutbar einfach, warum redest du weiterhin um den heissen Brei herum?
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


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