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
Zellen mit VBA füllen
Moderator: Moderatoren
wir machen hier StarBasicich möchte mit VBA mehrere Ergebnisse in verschiedene Zellen schreiben und zwar immer in die beiden rechts nebenstehenden

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
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
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
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: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?
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