[Calc] Aktuelle Zelle als Parameter übergeben

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: [Calc] Aktuelle Zelle als Parameter übergeben

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Do, 15.11.2007 16:32

Ah ok, danke!

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 20:47

Hallo stem

als Ergänzung: ein Calc-Funktion, ! die in einer Zelle steht ! , schreibt das Ergebniss grundsätzlich in die gleiche Zelle, andere Zellen sind während der Funktionausführung in dieser Form gesperrt.
Wenn du das umgehen willst (also per Funktion in andere Zellen Schreiben willst) musst du die Funktion mit einem Tastaturkürzel oder über eine Schaltfläche aufrufen mit evtl. zusätzlich einem Dialog zur Eingabe der Variablen.

Gruß Karo

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 20:02

Hallo,

ich glaube, wir reden aneinander vorbei. :D

Ich weiß ganz genau, was meine Funktion machen soll, nur komme ich mit der "Ausgabe" noch nicht klar.
Irgendwo in einer leeren, unbenutzten Zelle möchte ich schreiben: "=MEINEFUNKTION(40,H4)".

Diese Funktion soll nun in das Feld H4 (was ja nicht identisch mit der Zelle ist, in der der Funktionsaufruf
steht) die Zahl 40 schreiben, in H5 die Zahl 41 und in H6 die Zahl 42 (beispielsweise), also beginnend von
der als 2. Argument übergebenen "Koordinaten" in die Zellen darunter.

Die Koordinaten möchte ich als Parameter übergeben und nicht im Code selbst bereithalten, so dass die
Funktion universell einsetzbar ist.

Der Code

Code: Alles auswählen

mymultiplikation = zahl * zelle
überschreibt ja "nur" die Zelle mit dem Funktionsaufruf, was ich nicht möchte, hast Du ja schon
weiter oben selbst geschrieben:
Im Prinzip geht das, -aber- eben nicht genau aus der Zelle die du als Argument übergibst. Funktionen können nicht in die übergebenden Zellen geschrieben werden, da sie in diesem Fall deren bisherigen Inhalt überschreiben. ...
Ich hoffe, jetzt ist mein "Problem" sonnenklar.


Vielen Dank nochmals! :wink:

stem

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 19:30

Hallo stem
Du möchtest also eine Funktion programmieren, weisst aber noch nicht was sie tun soll und möchtest von uns erfahren wie sie das tut ;-)
Ich versuchs mal mit 2 Beispielen:

Code: Alles auswählen

function mymultiplikation(zahl , zelle)
mymultiplikation = zahl * zelle
end function
die Funktion multipliziert die beiden Werte die du übergibst.(egal ob direkt als Zahl und/oder als Zelladdresse)

möchtest du mit der Funktion gleich mehrer Zellen füllen dann bsplw.:

Code: Alles auswählen

Function plus1bis4mal(Zahl , Zelle)
dim bereich()
bereich() = array((zahl+1)*zelle,(zahl+2)*zelle,(zahl+3)*zelle,(zahl+4)*zelle)
plus1bis4mal = bereich()
End Function
Die Funktion addiert zu 'zahl' die Werte 1 bis 4 und multipliziert danach mit 'zelle', und schreibt die Ergebnisse in 4 Zellen nebeneinander. ( ! die Funktion musst du als Arrayfunktion abschliessen, mit Strg+Shift+Enter oder durch anhaken der entsprechenden Option im Funktionserstellungsfenster)

Gruß Karo

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 18:06

Danke! Wenn ich jetzt die Antwort auf meine "Zusatzfrage 1" wissen würde, und wie ich in der Funktion nun etwas in diese Zelle(n) schreiben kann, wäre ich wunschlos glücklich! Merci. :wink:


stem

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 17:05

Hallo stem
Lass die Deklarierung hinter 'Zelle' weg.
Function MeineFunktion(Zahl As Integer, Zelle)

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 16:29

Der Fehler kommt schon, wenn nur der Rumpf der Funktion wie folgt dasteht:

Code: Alles auswählen

Function MeineFunktion(Zahl As Integer, Zelle As Object)

End Function

stem

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 16:21

Hallo Stem

Poste mal den Basic-Code deiner Funktion, die Fehlermeldung "Laufzeitfehler - Objektvariable nicht belegt" deutet auf einen Fehler im Code hin.

Gruß Karo

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 15:56

Danke.

Jetzt weiß ich nur noch nicht, wie ich (ohne Fehlermeldung) die Position einer
Zelle als Argument übergeben kann.


stem

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 15:40

Hallo Friedhelm
Sorry, mein Fehler
In der Zelle muss die Funktion mit ; -semicolon als Parametertrenner geschrieben werden:
=MEINEFUNKTION(40;B6)
ohne irgendwelche Leerzeichen !
(Die Definition der Funktion in Basic aber mit Komma)

Gruß Karo
Ps. Ich werde es oben berichtigen

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 13:55

Karolus hat geschrieben: ... von daher bietet es sich an die Funktion gleich in die "übernehmende" Zelle B7 einzutragen. z.b.in B7:
=MEINEFUNKTION(40, B6)
Danke. OpenOffice reduziert das bei mir aber automatisch zu "=MEINEFUNKTION(40 B6)" (also Komma weg)
und spuckt wieder den Fehler 509 aus.

Zusatz: Sobald ich das Komma in ein Semikolon ändere, kommt die Fehlermeldung "Laufzeitfehler.
Objektvariable nicht belegt"

Ich würde gerne 6 Zellen (untereinander) beschreiben. Wie kann ich dynamisch in der Funktion von
der Zelle in die nächsten Zeilen kommen? Und wie lautet genau der Funktionsaufruf zum Schreiben in die
Zelle? Danke!

Sorry für die Newbie-Fragen. :wink:


stem

Re: [Calc] Aktuelle Zelle als Parameter übergeben

von Karolus » Mi, 14.11.2007 13:36

Hallo
stem hat geschrieben: ich möchte eine Funktion programmieren, die von einer Zelle aus aufgerufen wird,
und zwar mit folgenden beiden Argumenten:
- eine beliebige Zahl
- Zelle des Funktionsaufrufs (z.B. B6)

Klappt das so in der Art?

Code: Alles auswählen

Function MeineFunktion(Zahl As Integer, Zelle As Object)

End Function
Ich glaube nicht, denn beim Aufruf mit "=MEINEFUNKTION(40, B6)" erhalte ich "Err:509".
Im Prinzip geht das, -aber- eben nicht genau aus der Zelle die du als Argument übergibst. Funktionen können nicht in die übergebenden Zellen geschrieben werden, da sie in diesem Fall deren bisherigen Inhalt überschreiben. ...
stem hat geschrieben: Zusatzfrage 1: Wie kann ich in der Funktion etwas in die Zelle genau unterhalb der
übergebenen Zelle schreiben (also die Zeile um 1 erhöhen)?
... von daher bietet es sich an die Funktion gleich in die "übernehmende" Zelle B7 einzutragen. z.b.in B7:
=MEINEFUNKTION(40;B6)
stem hat geschrieben: Zusatzfrage 2: Kann ich auch direkt in der Funktion feststellen, von welcher Zelle
sie aufgerufen wurde? Dann könnte ich mir den Parameter ja sparen.
... damit dürfte auch dieses Problem gelöst sein ?
Falls nicht, beschreib nochmal detaillierter was deine Funktion den genau tun soll.

Gruß Karo

[Calc] Aktuelle Zelle als Parameter übergeben

von stem » Mi, 14.11.2007 13:07

Hallo,

ich möchte eine Funktion programmieren, die von einer Zelle aus aufgerufen wird,
und zwar mit folgenden beiden Argumenten:
- eine beliebige Zahl
- Zelle des Funktionsaufrufs (z.B. B6)

Klappt das so in der Art?

Code: Alles auswählen

Function MeineFunktion(Zahl As Integer, Zelle As Object)

End Function
Ich glaube nicht, denn beim Aufruf mit "=MEINEFUNKTION(40, B6)" erhalte ich "Err:509".

Zusatzfrage 1: Wie kann ich in der Funktion etwas in die Zelle genau unterhalb der
übergebenen Zelle schreiben (also die Zeile um 1 erhöhen)?

Zusatzfrage 2: Kann ich auch direkt in der Funktion feststellen, von welcher Zelle
sie aufgerufen wurde? Dann könnte ich mir den Parameter ja sparen.

Danke!


stem

Nach oben