Übergabe von Zelle als Objekt in eigener Funktion

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: Übergabe von Zelle als Objekt in eigener Funktion

Re: Übergabe von Zelle als Objekt in eigener Funktion

von Stephan » Sa, 21.12.2019 09:15

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

Re: Übergabe von Zelle als Objekt in eigener Funktion

von F3K Total » Fr, 20.12.2019 14:10

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:

Code: Alles auswählen

=KOMMENTAR(ZELLE("ADRESSE";A1);ZELLE("SHEET";A1))
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

von Stephan » Do, 19.12.2019 20:49

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:

Code: Alles auswählen

=KOMMENTAR(ZELLE("ADRESSE";A1)&"-"&ZELLE("SHEET";A1))
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

von drbrode » 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...

Re: Übergabe von Zelle als Objekt in eigener Funktion

von F3K Total » Do, 12.12.2019 18:04

Moin,
du brauchst nicht das Zellen-Objekt, es reicht wenn du den Zielzellennamen als String übergibst.
Im Tabellenblatt schreibst du in eine beliebige Zelle

Code: Alles auswählen

=KOMMENTAR(ZELLE("ADRESSE";A1))
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

Übergabe von Zelle als Objekt in eigener Funktion

von drbrode » Do, 12.12.2019 15:10

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.

Code: Alles auswählen

=ADDIEREN(A1;B2)
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!

Nach oben