Zellen per Makro umranden

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zellen per Makro umranden

Re: Zellen per Makro umranden

von duffman521 » Mo, 15.11.2010 12:40

Vielen Herzlichen Dank.

Das schont einige meiner Nerven.

Jetzt kommts nur noch auf die bedingte Formatierung an aber das wird auch noch irgendwie hin hauen.

Gruß

duffman521

Re: Zellen per Makro umranden

von duffman521 » Mo, 15.11.2010 11:31

Vielen Dank für die Hilfe Stephan.
1. Fehlermeldung:
Basich-Laufzeitfehler.
Eigentschaft oder Methode nicht gefunden: Text
Wird zu:

Basic-Laufzeitfehler.
Objektvariable nicht belegt.

Ich teste jetzt nicht gleich herum, was ich machen kann/soll sondern frage gleich, wie kann ich diesen Fehler beheben?

Das Dokument müsste eigentlich aktiv sein. Ich habe alles andere geschlossen und aus der Datei herraus das Makro geöffnet.

Re: Zellen per Makro umranden

von Stephan » Mo, 15.11.2010 11:15

1. Fehlermeldung:
Basich-Laufzeitfehler.
Eigentschaft oder Methode nicht gefunden: Text
.

Na dann existiert bei ThisComponent, keine entsprechende Schnittstelle weil es sich zum Zeitpunkt des Ablaus des Makros auf das falsche Objekt bezieht

ThisComponent erklärt sich z.B. wie folgt:
http://www.starbasicfaq.de/Worinbesteht ... hisCo.html
Komischerweiße kommt die Fehlermeldung nicht, wenn man Text. markiert und die Hilfe aufruft und danach das Makro gestartet wird.
Hier verstehe ich das "Komisch" nicht, denn es liegt völlig normales Verhalten vor, da die betreffendeen Code-Zeilen für jede x-beliebige Hilfeseite funktionieren sollten, da es sich um Textdokumente handelt.
Danach erscheitn folgende Fehlermeldung:
Unzulässiger Wert oder Datentyp.
Index außerhalt des definierten Bereichs

Markierte Zeile:
oTable = oTables(0)
mutmaßlich weil im referenzierten Dokument garkeine Tabelle vorhanden ist, was mittels:

Code: Alles auswählen

Msgbox oTables.Count
zu prüfen wäre, dabei sollte 0 ausgeben werden.
Ein gut Glück Versuch war oTable mit Integer zu Deklarieren.
?
keine Ahnung was das sagen soll oTable ist vom Typ Object und etwas VÖLLIG Anderes als oTables(), und auf Letzteres nam die ursprüngliche Fehlermeldung Bezug.


insgesamt:
der Bezug von ThisComponent stimmt zum Zeitpunkt der Makroausführung nicht, das dürfte das ganze Problem sein.
Da mir völlig unbekannt st warum dieser Bezug nicht stimmt und es dafür diverse GRünde geben kann, die sich zwar beim Lesen der Doku erschliessen, aber ich vermute mal das das wieder zuviel Arbeit ist, würde ich im Zweifel mit CurrentComponent arbeiten:

Code: Alles auswählen

oDoc = CurrentComponent
und dabei dringend darauf achten das das zu bearbeitende Dokument, zum Zeitpunkt des Makrostarts das aktive Dokument ist.



Gruß
Stephan

Re: Zellen per Makro umranden

von duffman521 » Mo, 15.11.2010 10:51

Code:

Code: Alles auswählen

sub test
   oDoc = thiscomponent
   Cursor = oDoc.Text.createTextCursor()   
   oTables = oDoc.GetTextTables()  
   oTable = oTables(0)  
   oBorder = oTable.Tableborder  
   oBorderline = oBorder.TopLine
   oBorderline.outerlinewidth = 30
   oBorderline.innerlinewidth = 30
   oBorderline.linedistance = 100
   oBorderline.color = &H00000CCC

oBorder.Topline = oBorderline 
oBorder.Bottomline = oBorderline 
oBorder.Leftline = oBorderline
oBorder.Rightline = oBorderline
oBorder.Horizontalline = oBorderline
oBorder.Verticalline = oBorderLine
oBorder.Distance = 100
oTable.Tableborder = oBorder 
end sub


1. Fehlermeldung:
Basich-Laufzeitfehler.
Eigentschaft oder Methode nicht gefunden: Text.

markierte Zeile:
Cursor = oDoc.Text.createTextCursor()


Komischerweiße kommt die Fehlermeldung nicht, wenn man Text. markiert und die Hilfe aufruft und danach das Makro gestartet wird.

Danach erscheitn folgende Fehlermeldung:
Unzulässiger Wert oder Datentyp.
Index außerhalt des definierten Bereichs

Markierte Zeile:
oTable = oTables(0)


Ein gut Glück Versuch war oTable mit Integer zu Deklarieren.

Danach erschien diese Meldung:
Basic-Syntaxfehler.
Symbol oTable bereits anders definiert.

Markierte Zeile:
oBorder = oTable.Tableborder


Ich hoffe einmal, dies sind genügend Informationen.

Gruß

duffman521

Re: Zellen per Makro umranden

von Stephan » Mo, 15.11.2010 10:26

Über etwas Hilfe wäre ich sehr dankbar.
Viele Mitleser hier sicher ebenfalls, z.B. über das Posten des Codes und konkreter Fehlermeldungen.

Der unter dem Link erreichbare Code lässt jedenfalls keinen Aufschluss zu.



Gruß
Stephan

Re: Zellen per Makro umranden

von duffman521 » Mo, 15.11.2010 09:50

Hallo retuwe61,

leider habe ich erste heute die Möglichkeit mir den Link anzuschauen. Bevor ich jetzt mein Problem schilderer ersteinmal vielen Dank.

Ich wollte jetzt den Beispiel Code entsprechend anpasse. Jetzt bekomme ich leider immer wieder Fehlermeldungen. Ich vermute es liegt an der Dekleration. Also ist logischer weiße, wie deklariere ich die Variablen diese Codes richtig?

Ich habe jetzt schon verschiedene Varianten getestet das Ergeniss war jedoch immer eine Fehlermeldung.

Über etwas Hilfe wäre ich sehr dankbar.

Gruß

duffman521

Zellen per Makro umranden

von duffman521 » Mo, 08.11.2010 10:40

Hallo Forengemeinde,

ich habe heute morgen ein Makro zum Umranden von Formeln erstellt. Dieses Funktioniert halb, es wird nur ein Rahmen um den ausgewählten Bereich gesetzt. Eigentlich sollten alle Zellen komplett umrandet werden.

Ich habe nun dieses Makro aufgenommen:

Code: Alles auswählen

sub Umrandung
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$4:$B$10"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(7) as new com.sun.star.beans.PropertyValue
args3(0).Name = "BorderOuter.LeftBorder"
args3(0).Value = Array(0,0,2,0)
args3(1).Name = "BorderOuter.LeftDistance"
args3(1).Value = 0
args3(2).Name = "BorderOuter.RightBorder"
args3(2).Value = Array(0,0,2,0)
args3(3).Name = "BorderOuter.RightDistance"
args3(3).Value = 0
args3(4).Name = "BorderOuter.TopBorder"
args3(4).Value = Array(0,0,2,0)
args3(5).Name = "BorderOuter.TopDistance"
args3(5).Value = 0
args3(6).Name = "BorderOuter.BottomBorder"
args3(6).Value = Array(0,0,2,0)
args3(7).Name = "BorderOuter.BottomDistance"
args3(7).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderOuter", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(4) as new com.sun.star.beans.PropertyValue
args4(0).Name = "BorderInner.Horizontal"
args4(0).Value = Array(0,0,2,0)
args4(1).Name = "BorderInner.Vertical"
args4(1).Value = Array(0,0,2,0)
args4(2).Name = "BorderInner.Flags"
args4(2).Value = 3
args4(3).Name = "BorderInner.ValidFlags"
args4(3).Value = 127
args4(4).Name = "BorderInner.DefaultDistance"
args4(4).Value = 0

dispatcher.executeDispatch(document, ".uno:BorderInner", "", 0, args4())

end sub
Leider habe ich keine Ahnung, wie dieser Code verändert werden muss, damit alle Zellen komplett umrandet werden. Ebenfalls ist mein Wissen überfordert um eine Schleife zugestallten um jede Zelle einzel zu markieren.

Über eine schnelle und hoffentlich unkomplizierte Hilfe wäre ich sehr erfreut.
Schon einmal vielen Dank für euer Hilfe.

Nach oben