Seite 1 von 1

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

Verfasst: Di 5. Sep 2023, 22:27
von milmac
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

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

Verfasst: Mi 6. Sep 2023, 05:15
von karolus
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'

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

Verfasst: Mi 6. Sep 2023, 10:40
von milmac
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.

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

Verfasst: Mi 6. Sep 2023, 13:08
von karolus
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

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

Verfasst: Mi 6. Sep 2023, 21:11
von milmac
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.

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

Verfasst: Mi 6. Sep 2023, 23:11
von karolus
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?