von Thomas Mc Kie » Do, 12.12.2013 15:03
Hallo Stefan,
danke für den Anschubser, ich hatte mir ja sogar Zelle() vorher selbst angesehen, aber auf die Idee, diese Funktion verschachtelt in meiner anzuwenden, bin ich aber dann dummerweise doch nicht gekommen.
So, was ich programmieren wollte, hab ich fertig, mal schauen ob damit geholfen ist.
Hier zur Info der Quellcode und die Datei angehängt:
Code: Alles auswählen
Function Hintergrundfarbe(Zelle)
REM Aufruf mit =HINTERGRUNDFARBE(ZELLE("ADRESSE";E9)); E9 durch beliebige Zelle austauschbar
REM Funktion gibt Hintergrundfarbe als Wert zurück
dim oCalc as Object
dim oSheet as Object
dim oCell as Object
anderes_Blatt=false
ocalc = thiscomponent
REM msgbox(Zelle)
Laenge = Len(Zelle)
For I = 1 To Laenge
Punkt = Mid(Zelle,I,1)
Select Case Punkt
Case "."
anderes_Blatt=true
Trenner=I
REM MSGBox "anderes Blatt=true"
End Select
Next I
if anderes_Blatt=false then REM Fallunterscheidung Zelle verweist auf dieses Tabellenblatt
Sheetname= ocalc.currentcontroller.activesheet.name
Zelladresse=Zelle
else REM Fallunterscheidung Zelle verweist auf anderes Tabellenblatt
Sheetname= LEFT(Zelle, Trenner-1) REM gibt Zeichen bis zum Punkt zurück, also Blattname, aber mit $
Sheetname= Right(Sheetname, Len(Sheetname)-1) REM gibt Blattname ohne $ zurück
if Left(Sheetname,1)="'" then
Sheetname= Mid(Sheetname, 2, Len(Sheetname)-2) REM Schneidet "'" vorne und hinten ab
end if
REM msgbox sheetname
Zelladresse=Right(Zelle, Laenge-Trenner) REM gibt Zeichen ab Punkt zurück, also Zellname
REM osheet = ocalc.Sheets(Sheetname)
REM ocell = osheet.getCellRangeByName(Zelladresse)
end if
REM MSGbox Sheetname
osheet = ocalc.Sheets().getByName(Sheetname)
REM MSGBox osheet.name
ocell = osheet.getCellRangeByName(Zelladresse)
REM msgbox ocell.string
REM msgbox ocell.CellBackColor
Hintergrundfarbe=ocell.CellBackColor
End Function
- Dateianhänge
-
- farbe.ods
- Makro Hintergrundfarbe als Benutzerdefinierte Funktion in Datei enthalten
- (13.72 KiB) 119-mal heruntergeladen
Hallo Stefan,
danke für den Anschubser, ich hatte mir ja sogar Zelle() vorher selbst angesehen, aber auf die Idee, diese Funktion verschachtelt in meiner anzuwenden, bin ich aber dann dummerweise doch nicht gekommen.
So, was ich programmieren wollte, hab ich fertig, mal schauen ob damit geholfen ist.
Hier zur Info der Quellcode und die Datei angehängt:
[code]
Function Hintergrundfarbe(Zelle)
REM Aufruf mit =HINTERGRUNDFARBE(ZELLE("ADRESSE";E9)); E9 durch beliebige Zelle austauschbar
REM Funktion gibt Hintergrundfarbe als Wert zurück
dim oCalc as Object
dim oSheet as Object
dim oCell as Object
anderes_Blatt=false
ocalc = thiscomponent
REM msgbox(Zelle)
Laenge = Len(Zelle)
For I = 1 To Laenge
Punkt = Mid(Zelle,I,1)
Select Case Punkt
Case "."
anderes_Blatt=true
Trenner=I
REM MSGBox "anderes Blatt=true"
End Select
Next I
if anderes_Blatt=false then REM Fallunterscheidung Zelle verweist auf dieses Tabellenblatt
Sheetname= ocalc.currentcontroller.activesheet.name
Zelladresse=Zelle
else REM Fallunterscheidung Zelle verweist auf anderes Tabellenblatt
Sheetname= LEFT(Zelle, Trenner-1) REM gibt Zeichen bis zum Punkt zurück, also Blattname, aber mit $
Sheetname= Right(Sheetname, Len(Sheetname)-1) REM gibt Blattname ohne $ zurück
if Left(Sheetname,1)="'" then
Sheetname= Mid(Sheetname, 2, Len(Sheetname)-2) REM Schneidet "'" vorne und hinten ab
end if
REM msgbox sheetname
Zelladresse=Right(Zelle, Laenge-Trenner) REM gibt Zeichen ab Punkt zurück, also Zellname
REM osheet = ocalc.Sheets(Sheetname)
REM ocell = osheet.getCellRangeByName(Zelladresse)
end if
REM MSGbox Sheetname
osheet = ocalc.Sheets().getByName(Sheetname)
REM MSGBox osheet.name
ocell = osheet.getCellRangeByName(Zelladresse)
REM msgbox ocell.string
REM msgbox ocell.CellBackColor
Hintergrundfarbe=ocell.CellBackColor
End Function[/code]