Seite 1 von 1
Zellvorlage ermitteln
Verfasst: Do, 04.01.2007 10:50
von Eia
Hallo,
könnte jemand von Euch Basic-Programmierern eine Funktion erstellen, mit der man die Vorlage einer Zelle ermittelt und die man z.B. so anwenden könnte:
=ZELLVORLAGE(A1)
Ergebnis wäre der Name der Vorlage von A1
Toll wäre ausch, wenn =ZELLVORLAGE() den Namen der Vorlage der aktuellen Zelle liefern würde.
Schon mal vielen Dank!
Verfasst: Do, 04.01.2007 13:26
von Karolus
Hallo
Toll wäre ausch, wenn =ZELLVORLAGE() den Namen der Vorlage der aktuellen Zelle liefern würde.
Dafür hab ich eine Lösung gefunden :
Code: Alles auswählen
function Zellvorlage as string
mydoc = thisComponent
'zelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
'zelle = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(adresse)
Zelle=myDoc.getCurrentSelection()
Zellvorlage = zelle.cellstyle
end function
funktioniert aber nicht für :ZELLVORLAGE('andere Zelladresse')
Gruß Karo
Verfasst: Do, 04.01.2007 14:04
von Karolus
Hallo Eia
Und jetzt noch eine Variante für den Aufruf mit :
=ZELLVORLAGE("A1") !mit Anführungszeichen! oder:
=ZELLVORLAGE(ZELLE("ADDRESS";A1))
Code: Alles auswählen
function Zellvorlage(adresse) as string
mydoc = thisComponent
'zelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
zelle = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(adresse)
'Zelle=myDoc.getCurrentSelection()
Zellvorlage = zelle.cellstyle
end function
ein Aufruf mit :
=ZELLVORLAGE(ZELLE("ADDRESS"))
liefert dir die Vorlage der aktuellen Zelle.
Gruß Karo
Verfasst: Do, 04.01.2007 15:01
von komma4
Mein Vorschlag:
Code: Alles auswählen
Function CellStyleName
sModulName = "CellStyleName "
sModulVersion = "20070104 " ' http://de.openoffice.info/viewtopic.php?t=10443
oDoc = ThisComponent
If Not oDoc.supportsService(_
"com.sun.star.sheet.SpreadsheetDocument" ) Then
MsgBox _
"Diese Funktion wurde nicht von einem Calc-Dokument aufgerufen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Diese Funktion meldet die verwendete Zell-Vorlage der aktuellen Zelle" _
& CHR(10) & "bei CALC-Dateien und funktioniert nur dort." _
& CHR(10) _
& CHR(10) & "Diese Funktion wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Function
End If
' get selection
oSel = oDoc.getCurrentSelection
' only one cell?
If Not oSel.supportsService(_
"com.sun.star.sheet.SheetCell" ) Then
MsgBox _
"Falsche Auswahl getroffen." & CHR(10) _
& CHR(10) & "Erklärung:" _
& CHR(10) & "Diese Funktion meldet die verwendete Zell-Vorlage der aktuellen Zelle." _
& CHR(10) & "Die momentane Auswahl ist aber keine (einzelne!) Zelle." _
& CHR(10) _
& CHR(10) & "Diese Funktion wird nun beendet." _
, 48 , sModulName & sModulVersion
Exit Function
else
CellStyleName = oSel.CellStyle
end if
End Function
Verfasst: Do, 04.01.2007 18:25
von Eia
Zunächst ganz herzlichen Dank!
1. Version:
Code: Alles auswählen
function Zellvorlage as string
mydoc = thisComponent
'zelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
'zelle = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(adresse)
Zelle=myDoc.getCurrentSelection()
Zellvorlage = zelle.cellstyle
end function
funktioniert im Prinzip. Aber nur bei der Ersteingabe. Wenn man nachträglich die Vorlage ändert, wird immer noch die alte angezeigt. Nur wenn man den Zellinhalt löscht und neu eingibt, wird wieder die aktuelle Vorlage gezogen. Aber möglicherweise ist das die übliche Funktionsweise von benutzereigenen Funktionen, das weiss ich nicht.
2, Version
Code: Alles auswählen
function Zellvorlage(adresse) as string
mydoc = thisComponent
'zelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
zelle = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(adresse)
'Zelle=myDoc.getCurrentSelection()
Zellvorlage = zelle.cellstyle
end function
liefert bei mir immer default, egal, welche Vorlage zugeordnet ist.
die dritte Version liefert das gleiche Ergebnis wie die erste. Zum aktualisieren muss man auch den Zellinhalt löschen und die Formel neu eingeben.
Ist das immer so bei selbstgebauten Funktionen? Werden die nicht aktualisiert wie die eingebauten?
Schöne Grüsse
Verfasst: Do, 04.01.2007 19:02
von Karolus
Hallo
Ist das immer so bei selbstgebauten Funktionen? Werden die nicht aktualisiert wie die eingebauten?
Nein, das liegt daran das die Funktion nicht mit den Zellinhalten rechnet, sondern nur das Zellformat abfragt, die Aktualisierung der Funktion kannst du aber auch mit STRG+SHIFT+F9 erzwingen.
Bei mir laufen alle drei Versionen, unter Verwendung der jeweils passenden Syntax:
mit Version 1 und 3 die Vorlage der aktuellen Zelle :
=ZELLVORLAGE()
=CELLSTYLENAME()
mit Version 2 :
=ZELLVORLAGE(ZELLE("ADDRESS")) → Vorlage der Zelle in der die Funktion steht.
=ZELLVORLAGE("A1") oder
=ZELLVORLAGE(ZELLE("ADDRESS";A1)) →Vorlage von A1
Gruß Karo