Hi Thomas,
das Beispiel ist ein Dummy-Beispiel. Im wirklichen Leben möchte ich nicht
den Inhalt aller Zellen des als Argument übergebenen Bereiches auf 8 setzen.
Ich habe z.B. mehrere Tabellen in denen in verschiedenen Bereichen erwartete
Wachstumsraten stehen (für verschiedene Produkte, Regionen, Zeiträume etc.).
Ich möchte dann eine VBA-Funktion oder Prozedur haben, mit der ich die
verschiedenen Wachstumsraten verändern kann (in Abhängigkeit verschiedener
Eingangsgrößen - wie das geschieht spielt hier glaube ich keine wesentliche
Rolle) und die alten Wachstumsraten in einem Bereich von Zellen überschreiben
kann.
Mir ist schon klar, wie ich das hinbekomme, wenn ich den Bereich, in den die
Ergebnisse geschrieben / überschrieben werden sollen, fest in einer Prozedur
hinterlege.
Im Wesentlichen suche ich die Flexibilität den Bereich des Tabellenblattes,
in den die Ergebnisse geschrieben werden sollen, mit als Argument in den
Aufruf einer VBA-Funktion oder -Prozedur zu geben. Ich dachte eine Funktion
wäre dazu ein eleganter 'Work Around' verstehe aber Deinen Hinweis, dass das
Ziel einer Funktion eigentlich ein anderes ist.
Any help?
Gruß
Georg
P.S. Ich wüßte auch nicht, wie ich das mit einer Sub-Prozedur lösen soll.
Zumal die Ausführung automatisch erfolgen soll, wenn sich die Daten in einem
bestimmten (als Argument verwendeten) Eingabebereich des Worksheets ändern.
Post by Thomas RamelGrüezi Georg
Georg M. schrieb am 17.04.2006
Post by Georg M.es gelingt mir nicht, einen Bereich (ich meine einen Range, mehrere Zellen
eines Arbeitsblattes) als Referenz an eine Funktion zu übergeben, so dass ich
die Zellen des Arbeitsblattes aus der Funktion heraus bearbeiten kann. Wie
Function RangeChange(ByRef rFeld As Range) as String
For Each rZ In rFeld
rZ.Value = 8
...
Die Übergabe des Ranges scheint mir OK zu sein, solange die Function aus
VBA heraus aufgerufen wird.
Post by Georg M.Aufruf mit ...
=RangeChange(C9:F13)
Was mache ich falsch?
Was willst Du denn mit der Function machen?
So wie es für mich aussieht willst Du im angegebenen Bereich überall den
Wert '8' setzen?
Das kannst Du mit einer Funktion die aus einer Tabellenzelle heraus
aufgerufen wird nicht tun.
Solche Funktionen dürfen (von einigen ganz wenigen Ausnahmen mal abgesehen)
nur einen Rückgabewert an die aufrufende Zelle liefern, nicht aber andere
Zellen und/oder deren Formate verändern. Das liefe auf eine klassische
Endlos-Schleife hinaus.
Mit freundlichen Grüssen
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]