Seite 1 von 1
[Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 13:07
von stem
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
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 13:36
von Karolus
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
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 13:55
von stem
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.
stem
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 15:40
von Karolus
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
Verfasst: Mi, 14.11.2007 15:56
von stem
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
Verfasst: Mi, 14.11.2007 16:21
von Karolus
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
Verfasst: Mi, 14.11.2007 16:29
von stem
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
Verfasst: Mi, 14.11.2007 17:05
von Karolus
Hallo stem
Lass die Deklarierung hinter 'Zelle' weg.
Function MeineFunktion(Zahl As Integer, Zelle)
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 18:06
von stem
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.
stem
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 19:30
von Karolus
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
Verfasst: Mi, 14.11.2007 20:02
von stem
Hallo,
ich glaube, wir reden aneinander vorbei.
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
ü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!
stem
Re: [Calc] Aktuelle Zelle als Parameter übergeben
Verfasst: Mi, 14.11.2007 20:47
von Karolus
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
Verfasst: Do, 15.11.2007 16:32
von stem
Ah ok, danke!