Das gibt mir zu denken. Stimmt, ich habe einfach Thiscomponent aus Fetzen von Dannenhöfer übernommen, ohne richtig zu verstehen, was sich dahinter verbirgt. Wann wird denn die Variable gesetzt?
Ich habe da nämlich ein sonderbares Phänomen. (Wahrscheinlich ist es aber lediglich meine Unfähigkeit).
Ich starte aus einer Calc-Anwendung ein Programm, das als erstes ein anderes Dokument öffnet, wie in meinem Erstbeitrag gezeigt, dann lese ich aus einer Datenbank Daten ein und erhalte ein Resultset. Dieses schreibe ich nun in ein Sheet des neuen Dokuments. Soweit, so gut. Nun wollte ich aber um jede Zelle eine Umrandung und habe dazu ein Unterprogramm Namens Kasten gebaut:
Code: Alles auswählen
Sub Kasten(intSpalte,intReihe As Integer)
Dim oDoc, oSheet,oCell, oBorder,oBorderline As object
oDoc = thiscomponent
oSheet=oDoc.currentcontroller.activesheet
oBorder = oSheet.Tableborder
oBorderline = oBorder.TopLine
oBorderline.outerlinewidth = 10
oBorderline.innerlinewidth = 0
oBorderline.linedistance = 0
oBorderline.color = &H00000000
oCell = oSheet.getCellByPosition(intSpalte,intReihe)
With oCell
.topBorder = oBorderline
.leftBorder = oBorderline
.rightBorder = oBorderline
.bottomBorder = oBorderline
end with
End Sub
Wenn ich das laufen lasse, wird etwa die Hälfte der Zellen umrandet, die fehlende Hälfte wird aber im Urspungsdokument, von dem aus ich das Programm aufrufe umrandet. Daher liegt mein Verdacht eben auf dieser vermaledeiten Thiscomponent.
Ich werde versuchen, das doc als Parameter zu übergeben.
Sub Kasten(intSpalte,intReihe As Integer, oDoc As Object)
Edit: Habe das nun so ausprobiert, und schon geht's. Danke gogo für Deine Hints. Offenbar wird diese Thiscomopnent vom System irgendwie umgesetzt. Sehr merkwürdig.