Hallo Günter,
ich habe deine Fehlermeldung provozieren können, wenn die Parameter von
doRahmen beim Aufruf anders sind als in der Defintion. Schau also erst
einmal penibel deinen Aufruf an, bevor du in deinen sauren Apfel beißt.
Ich schicke unten den vollständigen Code meines Test, den kannst du ja
mal in dein Testdok. kopieren und ausprobieren, dann hast du exakt den
Fall nachvollzogen, der geht. Ich habe zwei subs für die beiden Fälle,
aber inhaltlich nichts geändert außer dem Aktivieren der passenden Zeilen.
Ein anderer Grund für die Meldung könnte sein, dass du in einer anderen
Bibliothek eine Funktion gleichen Namens hast, aber das hast du ja durch
den Test mit idoRahmen praktisch ausgeschlossen.
Gerhard
Sub Main
doRahmen("B2:C3", 3)
doRahmen2(0,0,33,1,71)
End Sub
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 = oLinie1''0
.isRightLineValid = True
.bottomLine = oLinie1
.isBottomLineValid = True
.topLine = oLinie1
.isTopLineValid = True
End With
oZelle.TableBorder = oRahmen
End Sub
'Sub doRahmen(sBereich As String,d As Integer)
Sub doRahmen2(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 = oLinie1''0
.isRightLineValid = True
.bottomLine = oLinie1
.isBottomLineValid = True
.topLine = oLinie1
.isTopLineValid = True
End With
oZelle.TableBorder = oRahmen
End Sub
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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.