Zellen mit VBA füllen

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

Moderator: Moderatoren

Proximus
Beiträge: 9
Registriert: Do, 26.08.2004 10:24

Zellen mit VBA füllen

Beitrag von Proximus »

Hallo,

ich möchte mit VBA mehrere Ergebnisse in verschiedene Zellen schreiben und zwar immer in die beiden rechts nebenstehenden.
Bsp: ich rufe in der Zelle A1 meine Function auf und in A1, B1 und C1 sollen die 3 Ergebnisse stehen.
Die selbe Funktion will ich dann auch in A2 reinschreiben und die Ergebnisse sollen dann in A2, B2 und in C2 stehen.

Wie geht so was?

Danke und Gruß Poximus
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

ich möchte mit VBA mehrere Ergebnisse in verschiedene Zellen schreiben und zwar immer in die beiden rechts nebenstehenden
wir machen hier StarBasic :wink:

Wenn ich Dich richtig verstehe willst Du eine benutzerdefinierte Funktion programmieren, bei deren Aufruf mußt Du aber doch die erste Zelle als Parameter übergeben und wenn die erste Zelle bekannt ist, sind doch auch die beiden anderen bekannt (bzw. bestimmbar).
Poste doch mal Deinen bisherigen Code damit ich verstehen kann wo das Problem ist.

Gruß
Stephan
Proximus
Beiträge: 9
Registriert: Do, 26.08.2004 10:24

Beitrag von Proximus »

Hallo,

hier kommt mal eine Beispiel für mein Problem:

A B C
1 Plan-Anfang Plan-Ende Plan-Dauer
2 10.01.2004 20.01.2004 11
3 13.01.2004 24.01.2004 12

Jetzt kommt die Rechnung:

es werden alle 3 Werte in die Formel gebeben, die in der Zelle A4 aufgerufen wird.

Function BEFORE(panf, pend, dauer, samstag, sonntag)
Dim ianf, iend
ianf = Anfangsdatum(panf, samstag, sonntag)
iend = Enddatum(ianf, dauer, samstag, sonntag)

While iend >= panf
ianf = ianf - 1
iend = iend - 1
Wend
dauer = iend - ianf

BEFORE = ianf
End Function



Jetzt werden die Werte ianf (Ist-Anfang), iend (Ist-Ende) und dauer (Ist-Dauer) berechnet und zwar zu erste der Anfangswert (nach intenerscheieben, fals es ein Feiertag oder Wochenende ist. Danach wird abhängin von diesem Wert der Endwert berechnet und die Differenz zwischen beiden entsteht auch. Sprich wir haben 3 Werte. Da die Formel in A4 steht, kann ja hier auch der ianf ausgegeben werden und in B4 soll der iend und in C4 die dauer stehen. Geht das?
Ich hatte das jetzt verucht mit einer Select Case Anweisung und einem zusätzlichen Parameter zu realisieren und damit ein bestimmtes Ergebniss zu erhalten. Das geht auch ab und zu, aber manchmal sagt er auch #REF. Warum ist das nur manchmal und mal geht das... Ich bin völlig verwirrt.

Danke und Gruß Proximus
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Jetzt werden die Werte ianf (Ist-Anfang), iend (Ist-Ende) und dauer (Ist-Dauer) berechnet und zwar zu erste der Anfangswert (nach intenerscheieben, fals es ein Feiertag oder Wochenende ist. Danach wird abhängin von diesem Wert der Endwert berechnet und die Differenz zwischen beiden entsteht auch. Sprich wir haben 3 Werte. Da die Formel in A4 steht, kann ja hier auch der ianf ausgegeben werden und in B4 soll der iend und in C4 die dauer stehen. Geht das?
Ich nehme somit an das Du die 3 Werte berechnen kannst, ich habe nicht weiter darüber nachgedacht. Du müßtest Deine Funktion so gestalten das Du die Zellposition als Parameter übergibst, dann kannst Du diesen auswerten und die 2 anderen Zellen bestimmen, also:

Function BEFORE(Zelle, panf, pend, dauer, samstag, sonntag)

Mir ist kein Weg bekannt wie Du in einer Funktion ermitteln könntest aus welcher Zelle heraus diese Funktion aufgerufen wurde.

P.S. Warum eigentlich muß alles in einer Funktion stehen, wenn Du die Funktionen Anfangsdatum() und Enddatum() getrennt verwendest kannst Du sie gleich in die richtigen Zellen schreiben und in der dritten Zelle die Differenz bilden.


Gruß
Stephan
Antworten