Seite 1 von 1
Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Do, 12.12.2019 15:10
von drbrode
Hallo,
ich brauche mal bitte kurz eure Hilfe.
In calc lassen sich über die Makro-Programmierung ja eigene Funktionen erstellen, die man dann über die entsprechenden Befehle in der Tabelle verwenden kann.
Z.B.
Code: Alles auswählen
function ADDIEREN (a, b)
ADDIEREN = a + b
end function
Die Parameter a und b kann man dann in der Tabelle durch Zellbezüge angeben.
Z.B.
Dabei werden allerdings immer die Zellinhalte an die Funktion übergeben.
Ist es auch möglich an dieser Stelle die Zelle als Objekt zu übergeben? Wenn ja, wie geht das?
Falls die Frage kommt: Ich möchte gerne per Formel in der Tabelle die Notiz einer Zelle auslesen.
Code: Alles auswählen
function KOMMENTAR(myCell as object)
KOMMENTAR = thisComponent.currentController.getActiveSheet.getCellRangebyName(myCell).annotation.string
end function
Danke für jede Hilfe!
Re: Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Do, 12.12.2019 18:04
von F3K Total
Moin,
du brauchst nicht das Zellen-Objekt, es reicht wenn du den Zielzellennamen als String übergibst.
Im Tabellenblatt schreibst du in eine beliebige Zelle
um den Kommentar der Zelle A1 mit dieser UDF auszulesen:
Code: Alles auswählen
function KOMMENTAR(myCell as String)
KOMMENTAR = thisComponent.currentController.getActiveSheet.getCellRangebyName(myCell).annotation.string
end function
So kannst du die Formel sogar "herunterziehen"
Gruß R
Re: Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Do, 19.12.2019 14:24
von drbrode
Danke, so klappt das sehr gut...
...nur leider nur bis zu einem Neustart des Dokuments. Danach werden in allen Zellen, die die neue Formel enthalten Fehler angezeigt. Erst nah einer ktualisierung sind die Ergebnisse dann wieder korrekt. Komisch...
Re: Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Do, 19.12.2019 20:49
von Stephan
drbrode hat geschrieben: Do, 19.12.2019 14:24
Danke, so klappt das sehr gut...
...nur leider nur bis zu einem Neustart des Dokuments. Danach werden in allen Zellen, die die neue Formel enthalten Fehler angezeigt. Erst nah einer ktualisierung sind die Ergebnisse dann wieder korrekt. Komisch...
CurrentController ist zum Zeitpunkt wo die Formel bei Start berechnet wird noch nicht verfügbar.
Eine mögliche Lösung wäre:
mit benutzerdefinierter Funktion:
Code: Alles auswählen
function KOMMENTAR(myCell as String)
x = Split(myCell,"-")
KOMMENTAR = ThisComponent.Sheets.getByIndex(VAL(x(1))-1).getCellRangebyName(x(0)).annotation.string
end function
Gruß
Stephan
Re: Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Fr, 20.12.2019 14:10
von F3K Total
Hallo zusammen,
Stephan hat geschrieben: Do, 19.12.2019 20:49
Eine mögliche Lösung wäre: ...
Eine weitere ... Man kann einer Benutzerdefinierten Funktion mehrere Argumente übergeben, dann wäre eine weitere Möglichkeit:
Formel in der Zelle:
UDF:
Code: Alles auswählen
function KOMMENTAR(myCell as String, mySheet as integer)
KOMMENTAR = ThisComponent.Sheets.getByIndex(mySheet-1).getCellRangebyName(myCell).annotation.string
end function
Gruß R
Re: Übergabe von Zelle als Objekt in eigener Funktion
Verfasst: Sa, 21.12.2019 09:15
von Stephan
es wäre schön wenn man die CELL()-Funktion direkt in der benutzerdefinierte Funktion nutzen könnte (
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig229), dann müsste man nur "A1" übergeben, mir ist das aber nicht gelungen.
Gruß
Stephan