Hallö Thomas,Vielen Dank für die Aufklärung, das ist mir völlig neu gewesen. Aus anderen Programmiersprachen ist mir so etwas nicht bekannt, man lernt also im hohen Alter immer noch dazu.
Herzliche Grüße Günter Am 24.10.2017 um 16:55 schrieb Thomas Krumbein:
Hallo Günter, Nein. Die Funktion doRahmen() ist schon ok. Da liegt der Fehler nicht. Der Fehler ist im Aufruf. Den hast Du uns bisher vorenthalten!Die Funktion (bei dir sub) doRahmen() hat diverse Parameter definiert. Diese sidn - wenn nicht mit "optional" definiert - bindend.In deiner ersten Funktion hast Du zwei Parameter definiert - also funktioniert der Aufruf doRahmen("$A$1:$K$7",71) auch.Rufst Du aber doRahmen("") oder doRahmen(71) auf, so fehlt ja ein Parameter - für LO Basic ist das nun eine neue Funktion - und das geht nicht, weil ja dieser Name schon vergeben ist.Wenn Du deine Sub also mit 5 Parametern definierst (deine auskommentierte) - dann musst Du auch bei allen Aufrufen 5 Parameter übergeben - sonst geht das nicht!Viele Grüße Thomas Am 24.10.2017 um 16:24 schrieb Günter Fritze:Hallo Gerhard,Vielen Dank für Deine schnelle Antwort. Es heißt bei mir auch oLinie1, die 0 ist wohl beim Kopieren dazugekommen. Ich habe jetzt ein ganz neues Dokument erzeugt, mit einem ganz anderen Namen xyz. Als Makro ist außer Main nur noch die Prozedur doRahmen. Dann kann ich einen Haltepunkt setzen, ohne daß etwas passiert. Wenn ich das ausprobieren möchte und unter Main einen Aufruf doRahmen() eintrage, kommt beim Haltepunkt setzen die Fehlermeldung "Libreoffice 5.1.6.2, Symbol doRahmen bereits anders definiert". Das gleiche funktioniert auf einem Notebook mit einem ganz alten Libre-office. Der Fehler passiert auch bei einer leeren Prozedur, die nur aus "Sub-Zeile" und "End Sub" besteht.Wenn ich den Bereich als String festlege funktioniert es. Aber folgendes Kuriosum.Der richtige Aufruf wäre doRahmen("$A$1:$K$7",71) Wenn die Aufrufanweisung aber falsch ist, wie z.B.doRahmen("") oder doRahmen(71) dann kommt beim setzen eines Haltepunktes die bewußte Fehlermeldung, ganz ohne Aufruf. Ich werde wohl in den sauran Apfel beißen und eine Umwandlungsfunktion "Position nach Name" schreiben.Habts eine gute Zeit zusammen Herzliche Grüße Günter Am 24.10.2017 um 14:34 schrieb Gerhard Weydt:Hallo Günter,ich habe das an einem neuen Calc-Dokument ausprobiert, bei mir funktioniert das. Mein Release: 5.3.4.2. Es würde mich aber sehr wundern, wenn das Release damit zu tun hätte. Versuche das auch mal ohne das Drumherum deines jetzigen Dokuments in einem neuen Dokument, wenn es dann wie bei mir klappt, wird etwas an deinem sonstigen Code das Problem sein.Zwei Anmerkungen noch: * An einer Stelle hast du im Code, den du geschickt hast, oLinie10 statt oLinie1; das meldet Basic ordentlich als Fehler * zahl und oTab wird offenbar derzeit nicht gebraucht und tut auch nichts Sichtbares Gruß Gerhard Am 24.10.2017 um 13:50 schrieb Günter Fritze:Hallo zusammen!Ich verstehe garnichts mehr: Ich habe ein Makro geschrieben, das einen speziellen Jahreskalender in einer Tabellen-Calculation generiert. Für die Strukturierung der Tabelle habe ich ein Makro, das um einen Bereich eine Umrandung erzeugt. Die Bereiche werden als Namen angegebn, z.B. "$A1:$EG5". Da die Breite der Monatstabellen variiert, Februar, Schaltjahr,30,31 Tage, möchte ich die Angaben als Position machen, und das geht schief. Die Funktion sieht so aus:Sub doRahmen(sBereich As String,d As Integer)'Sub doRahmen(iLOx As Integer,iLOy As Integer,iRUx As Integer,iRUy As Integer,d As Integer)Dim oZelle As Object oDoc = ThisComponent oSheets = oDoc.getSheets() zahl = oDoc.getSheets().Count+1 oTab = oDoc.createInstance("com.sun.star.sheet.Spreadsheet") oController = oDoc.CurrentController oSheet = oController.activesheet oZelle = oSheet.getCellRangeByName(sBereich)' oZelle = oSheet.getCellRangeByPosition(iLOx,iLOy,iRUx,iRUy)Dim oLinie1 as new com.sun.star.table.BorderLine With oLinie1 .Color = 16724991 .outerLineWidth = d End With Dim oRahmen as new com.sun.star.table.TableBorder With oRahmen .leftLine = oLinie1 .isLeftLineValid = True .rightLine = oLinie10 .isRightLineValid = True .bottomLine = oLinie1 .isBottomLineValid = True .topLine = oLinie1 .isTopLineValid = True End With oZelle.TableBorder = oRahmen End Sub Es funktionert einwandfrei mit der Namensangabe z.B. mit dem Aufruf doRahmen("$A$1:$EG$2",71)Benutze ich die in der Prozedur auskommentierten Zeilen, Ortsbestimmung per Position, dann kommt die Fehlermeldun : Prozedur schon wo anders definiert???. Na schön habe ich gedacht, dann setze ich vor das doRahmen noch ein i, also idoRahmen. Ergebnis: gleiche Fehlermeldung. Wat nu?doRahmen(0,0,33,1,71)Ich würde ja akzeptieren wenn die Prozedur bei der Änderung garnicht mehr funktionieren würde, aber die Fehlermeldung kommt schon, wenn man einen Haltepunkt setzt.Mein System: Linux Mint 18.2 Sonya 64 Bit Kernel Linux 4.8.0-53-generic, x86_64 Mate 1.18.0 Mit freundlichen Grüßen Günter
-- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de Listenarchiv: https://listarchives.libreoffice.org/de/users/ Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert