Text per Makro einfügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Ducki
Beiträge: 3
Registriert: Sa, 15.11.2008 18:03

Text per Makro einfügen

Beitrag von Ducki »

Hallo erstmal,

ich bin zum ersten Mal im Forum mit einer Frage da ich derzeit nur mit Excel gearbeitet habe.
Mein Problem ist: ich habe ein Tabellenblatt und möchte in markierten Bereichen die Zellen mit Farbe und einem Kürzel
füllen. Der Code in Excel sah so aus:

Private Sub
For Each bereich In selection
bereich.Interior.CollorIndex=33
bereich.Value = "GLz"
Next bereich
End Sub


Mein Code in Cal ist

sub subFillSelectedCells(sFill)

oController = thisComponent.CurrentController 'StarDesktop.CurrentComponent.currentController
oSelections = oController.selection

if oSelections.supportsService("com.sun.star.sheet.SheetCell") then
oSelections.CellBackColor = RGB(0, 254, 54)

elseif oSelections.supportsService("com.sun.star.sheet.SheetCellRange") then
oSelections.CellBackColor = RGB(0, 254, 54)

else
for i = 0 to oSelections.count - 1
oSelection = oSelections.getByIndex(i)
if oSelection.supportsService("com.sun.star.sheet.SheetCell") then
oSelection.setString(sFill)

else
'subFillRange(oSelection, sFill)
end if
next
end if
end sub


Das mit der Farbe klappt ganz wunderbar nur einen Text bekomme ich nicht in die Zellen. :(
Eventuell mach ich es auch zu kompliziert?

Möglicherweise hat ja einer von Euch eine Idee wie man das lösen kann.

Dank an Alle und Gruß aus Lippe
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Text per Makro einfügen

Beitrag von hawe »

Vielleicht solltes Du ganz einfach sauber ausformulieren was Du selektiert hast

Code: Alles auswählen

oSelections.CellBackColor = RGB(0, 254, 54) ' deck alle Selections ab
if oSelections.supportsService("com.sun.star.sheet.SheetCell") then
    oSelections.setString(sFill)
elseif oSelections.supportsService("com.sun.star.sheet.SheetCellRange") then
' da sind rows and columns mit
 oSelections.getCellByPosition(icol, irow).setString(oFill)
elseIf oSelections.supportsService("com.sun.star.sheet.SheetCellRanges") Then
'das sind mehrere SheetCellRange 
oSelections.getByIndex(i)
jeweils mit rows und columns
'BTW  .Count heisst hier .getCount()
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Ducki
Beiträge: 3
Registriert: Sa, 15.11.2008 18:03

Re: Text per Makro einfügen

Beitrag von Ducki »

Danke für die schnelle Antwort!

So gesehen war alles doppelt, habe leider nicht viel Ahnung von Makros.

Wie bekomme ich nun einen Text in die selektierten Zellen?

Habe es versucht mit :?

Code: Alles auswählen

sub subFillSelectedCells(sFill)

document   = ThisComponent.CurrentController.Frame
oController = thisComponent.CurrentController 'StarDesktop.CurrentComponent.currentController
oSelections = oController.selection


    oSelections.CellBackColor = RGB(0, 254, 54) 'deck alle Selections ab
       oSelections.String="Dies ist ein Text"

end sub
Das funktioniert (färben und text einfügen) jedoch nur wenn eine Zelle makiert ist. Sobald mehrere Zellen selektiert sind bekomme ich eine Fehlermeldung (Eigenschaft oder Methode nicht gefunden) :(

Wie gesagt bin nicht so vertraut mit Makros, möchte aber wegen dieser einen Datei Excel nicht installieren.

Gruss und Dank
Andreas
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Text per Makro einfügen

Beitrag von hawe »

Ajee,
was Sache ist hab ich in meinem Posting beschrieben und aweng Eigeninitiative möcht aber schon sein ;-).
Vielleicht nimmst Du einfach den ursprünglichen VBA Code und schreibst
Option VBASupport 1
drüber - sollte eigentlich tun...
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Ducki
Beiträge: 3
Registriert: Sa, 15.11.2008 18:03

Re: Text per Makro einfügen

Beitrag von Ducki »

Danke für die schnelle Hilfe,

jetzt funktioniert das Makro wie es sollte.
Hätte nicht gedacht das es so einfach ist. Bin halt unerfahren mit Makros.

Nochmals herzlichen Dank

Gruß
Andreas
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Re: Text per Makro einfügen

Beitrag von mike6 »

Hallo Andreas,

kannts Du mal den kompletten Code ins Netz stellen?
Interessiert mich.


mfg
mike6
Antworten