Zellvorlage ermitteln

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: Zellvorlage ermitteln

von Karolus » Do, 04.01.2007 19:02

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

von Eia » Do, 04.01.2007 18:25

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

von komma4 » Do, 04.01.2007 15:01

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

von Karolus » Do, 04.01.2007 14:04

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

von Karolus » Do, 04.01.2007 13:26

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

Zellvorlage ermitteln

von Eia » Do, 04.01.2007 10:50

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!

Nach oben