Sub Formatieren (oSheet)
Dim oCell As Object
oCell = oSheet.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
oCell.CharFontName="Cambria"
oCell.CharHeight="15"
oSheet.Columns(0).Width="7200"
oSheet.Columns(0).VertJustify=com.sun.star.table.CellVertJustify.CENTER
oSheet.Columns(1).Width="6000"
oSheet.Columns(1).VertJustify=com.sun.star.table.CellVertJustify.CENTER
oSheet.Columns(2).Width="1200"
oSheet.Columns(2).VertJustify=com.sun.star.table.CellVertJustify.CENTER
oSheet.Columns(3).CharHeight=10
oSheet.Columns(3).Width="3000"
oSheet.Columns(4).Width="12000"
For N=2 To 50
oSheet.Rows(N).Height="1300"
Next N
End Sub
Lief vorher im Hauptprogramm einwandfrei, jetzt im Unterprogramm kommt in der Zeile XXXXX die Fehlermeldung "BASIC Laufzeitfehler Argument nicht optional"
Bin ratlos, vorher kein Fehler, jetzt aber weil....???
VG
peter
Zuletzt geändert von peter999999 am Fr, 20.10.2023 15:23, insgesamt 1-mal geändert.
peter999999 hat geschrieben: Di, 17.10.2023 22:16
Lief vorher im Hauptprogramm einwandfrei, jetzt im Unterprogramm kommt in der Zeile XXXXX die Fehlermeldung "BASIC Laufzeitfehler Argument nicht optional"
Bin ratlos, vorher kein Fehler, jetzt aber weil....???
Im übrigen ist »oCell« ein schlechter Name für einen Zellbereich, die literalen Zahlenwerte müssen nicht in Anführungszeichen gesetzt werden, und die for-Schleife am Ende kannst du ersetzen durch:
...
REM oSheetx.Rows(N).Height="1300"
REM Next N
BildEinfuegen(oSheetx)
Formatieren(oSheetx)
oDoc2 = StarDesktop.loadComponentFromUrl("private:factory/scalc", "_blank", 0, Args())
oDoc2.StoreAsURL("file:///I:/Bereich2.ods", noArgs())
Hallo,
da bleibt die Frage, was sich hinter der Variablen oSheet verbirgt.
Dazu wäre hilfreich, nicht nur das Unterprogramm zu kennen, sondern auch die aufrufende Routine. Sind die Variablen ggf. global definiert?
Hallo,
anbei mal ein minimale Testdatei.
Der von dir beschrieben Fehler taucht bei mir (natürlich auch) auf, wenn ich versuche die Sub formatieren direkt aufzurufen.
Sub Main
odoc=thiscomponent
otab=odoc.Sheets(0)
oCell = otab.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
End Sub
Sub Formatieren (oSheet)
Dim oCell As Object
oCell = oSheet.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
end sub
Falls du »formatieren« direkt in der BASIC-ide aufrufst, rufst du die Routine OHNE ARGUMENTE AUF
Du musst die schon aus der Hauptroutine heraus mit dem gewünschten Argument aufrufen
LO7.4.7.2debian 12(bookworm) auf Raspberry4b 8GB (64bit) LO24.8.2.1 flatpakdebian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hallo!
Irgendwie verstehe ich jetzt nicht, was du meinst. ich habe mit deiner Testtdatei jetzt zwei Durchläufe gemacht, gestartet wird natürlich immer Sub MAIN:
REM ***** BASIC *****
Sub Main
odoc=thiscomponent
otab=odoc.Sheets(0)
oCell = otab.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
REM Formatieren(otab)
MsgBox "Fertig!"
End Sub
REM Sub Formatieren (oSheet)
REM Dim oCell As Object
REM MsgBox "Hier bin ich!"
REM oCell = oSheet.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
REM end sub
... und der hier nicht, der Laufzeitfehler tritt nach der Dialogbox "Hier bin ich!" auf:
REM ***** BASIC *****
Sub Main
odoc=thiscomponent
otab=odoc.Sheets(0)
oCell = otab.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
Formatieren(otab)
MsgBox "Fertig!"
End Sub
Sub Formatieren (oSheet)
Dim oCell As Object
MsgBox "Hier bin ich!"
oCell = oSheet.getCellRangeByPosition(0, 0, 3, 50) 'XXXXX
end sub
Ich habe jetzt mal sämtliche Libreofficedateien, die noch offen waren, geschlossen und nur die Datei mit dem Makro geöffnet: Es rennt jetzt!
Die Ursache war, dass ich irgendwann mal das XrayTool mal zum Test geöffnet hatte und das immer noch geöffnet war. Starte dich das wieder, tritt auch der Fehler wieder auf.
Die eigentliche Ursache kenne ich zwar immer noch nicht, aber wenigstens den Auslöser