Funktions Parameter als Object

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Funktions Parameter als Object

Beitrag von clag »

Hallo Kenner und Könner,

wie kann man an eine Funktion eine Zelleadresse als Object übergeben,
so das man beliebig Inhalt und Eigenschaften auswerten kann?

=MEINFUNCTION(M33)

Code: Alles auswählen

MeineFunction(xCell as Object)
liefert mir eine Fehlermeldung "Objektvariable nicht belegt"
Zuletzt geändert von clag am Di, 26.05.2015 15:24, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funtions Parameter als Object

Beitrag von Stephan »

wie kann man an eine Funktion eine Zelleadresse als Object übergeben
garnicht.

Alternative kann die Übergabe der Zelladresse sein, z.B.:

=MEINFUNCTION(ZELLE("Adresse"))


Gruß
Stephan
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Funtions Parameter als Object

Beitrag von Karolus »

Hallo
wie kann man an eine Funktion eine Zelleadresse als Object übergeben,
so das man beliebig Inhalt und Eigenschaften auswerten kann?
Indem man ein Calc-ADDINN schreibt, und in der IDL-beschreibung das Argument als
::com::sun::star::table::XCellRange definiert.

http://www.openoffice.org/api/docs/comm ... AddIn.html
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Hallo

@Stephan
Danke für die klare Ansage

@Karolus
ok gut zu wissen das da noch ein Weg möglich ist abe der überfordert mich wohl zZ


aber nach noch einmal anders gefragt
kann man einen Parameter unterschiedlich auswerten?

zB =MEINEFUNKTION(Spalte(G12))

der Code

Code: Alles auswählen

Function MEINEFUNKTION( xInput as Variant )
Print xInput  
print bringt "7"

kann ich irgendwie (mit einem Trick) auch ein print generieren, das mir zusätzlich "Spalte(G12)" liefert
also das ich Resultat und String bekomme?
Zuletzt geändert von clag am Di, 26.05.2015 09:14, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Funtions Parameter als Object

Beitrag von Karolus »

Hallo
zB =MEINEFUNKTION(Spalte(G12))
Da es bereits die Funktion SPALTE gibt, wird diese zuerst aufgelöst und gibt die Spaltennummer zurück -- deine `MEINEFUNKTION` bekommt daher nichts weiter als die Zahl 7 zu sehen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Hallo Karolus,

schade, aber es ist dann eben so! Hatte gehofft es mir ganz einfach machen zu können,
ich wollte an "MeineFunktion" die Info "column/row" und die "Position" ohne zusätzlichen Code übergegen

jetzt müsste ich schreiben
=MEINEFUNKTION("Spalte"; Spalte()) oder
=MEINEFUNKTION("Zeile"; Zeile())
ich finde, das sieht irgendwie doof aus.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Funtions Parameter als Object

Beitrag von Karolus »

Das sieht nicht nur so aus....
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Hallo Karolus,

ich hatte es schon befürchte, das dein Kommetar diesmal etwas bissiger ausfällt ;)

Aber wie sage ich es denn meinem Kinde in eleganterer Form, das der Wert als Index einer Spalt oder Zeile anzuwenden ist?
Ja man könnte den Wert gleich als Zahl eingeben z.B. =MEINEFUNKTION("Spalte"; 154)
aber wer weiß schon aus dem Kopf welche Spalte "EX" ist ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Funtions Parameter als Object

Beitrag von Karolus »

Die Funktion =SPALTE(EX1) weiss es...
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funtions Parameter als Object

Beitrag von Stephan »

Ja man könnte den Wert gleich als Zahl eingeben z.B. =MEINEFUNKTION("Spalte"; 154)
aber wer weiß schon aus dem Kopf welche Spalte "EX" ist ?
Was willst Du denn nun überhaupt ... ?

Wenn Du bereit bist Formeln so zu parametieren wie in "=MEINEFUNKTION("Spalte"; 154)", kannst Du genausogut auch "=MEINEFUNKTION("G21")" verwenden (was dann nicht doof aussieht), weil das Ziel meines Beispiels (deshalb auch mit "z.B." gekennzeichnet) doch nur das war einen Vorschlag zu machen bei dem sich beim 'Ziehen' oder Kopieren der Formel der Bezug automatisch anpasst.

Da in "=MEINEFUNKTION("Spalte"; 154)" die 154 beim Ziehen/Kopieren ohnehin statisch ist, ist stattdessen "=MEINEFUNKTION("G21")" dann die bessere Lösung.

... und bitte komme selbst darauf wie Du mit "G21" innerhalb Deiner benutzerdefinierten Funktion auf das Zellobjekt zugreifen kannst ;-)


Gruß
Stephan
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Ha!

na denn bin ich ja wieder bei =MEINEFUNKTION("Spalte"; Spalte(EX)) :roll:

ich glaube es ist einfacher ich werde die Funktion in zwei separate Funktionen aufbrechen
eine nur für Zeile und eine für Spalte, dann brauche ich nur die Zahl.
Na nen Versuch wars trotzdem wert.

Also allerbesten Dank für die Unterstützung.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Funtions Parameter als Object

Beitrag von Karolus »

Wie soll ich das jetzt verstehen?

Hast du tatsächlich diesen Thread gestartet nur um irgendwie bereits vorhandene Funktionen ( SPALTE, ZEILE ) neu zu erfinden.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Hallo Stephan,

unser Beiträge haben sich gerade überschnitten.
Stephan hat geschrieben:... und bitte komme selbst darauf wie Du mit "G21" innerhalb Deiner benutzerdefinierten Funktion auf das Zellobjekt zugreifen kannst ;-)

und ich zeige auch schon mal vorrauseilendes erröten für meine Fragerei
deine Antwort lässt mich ja vermuten das ich mich gerade ziemlich daneben ziele,
aber es klingel irgenwie garnix bei mir, außer mein Tinitus?

gib mir doch bitte noch einen Tip.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Funtions Parameter als Object

Beitrag von clag »

Hallo Karolus,
Karolus hat geschrieben: Hast du tatsächlich diesen Thread gestartet nur um irgendwie bereits vorhandene Funktionen ( SPALTE, ZEILE ) neu zu erfinden.
nein nen bischen deppert bin ich ja schon aber noch nicht völlig.

ich möchte mit einer Funktion die letzte benutze Zelle ermitteln entweder für Spalte oder Zeile,
darum muss die Funktion irgendwie wissen ob und in welcher Spalte / Zeile gesucht werden soll.

Ihr beide treibt gerade, "wie ein Wiesel das Kaninchen über den Acker" mich durch das Basicgebüsch. ;)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Funtions Parameter als Object

Beitrag von Stephan »

verwende:

=MEINEFUNKTION("G21")

mit:

Code: Alles auswählen

Function MEINEFUNKTION(x As String)
zellobjekt = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(x)
'.... mache was mit dem zellobjekt
End Function
Das Ganze sieht in der Zelle dann nicht doof aus, hat nur den Nachteil das sich die Formel bei Ziehen/Kopieren eben nicht automatisch anpasst.

Gruß
Stephan
Antworten