Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Array aus Funktion rausholen

Array aus Funktion rausholen
23.10.2005 22:38:28
imnag
Hi !
Bin VBA-Anfänger und habe folgendes Problem (Codebsp. siehe unten):
Verwende innerhalb einer Funktion (HullWhiteOption) einen Array (Q()).
Diesen Array würde ich danach gerne wieder mit einer anderen Prozedur (prnQtree) ausdrucken auf einem sheet.
Wie kann ich das am besten anstellen ? Wie kann ich generell aus einer Funktion/Prozedur eine Variable wieder rausholen ?
Ersuche um Eure Hilfe !
Danke
mfg
imnag
Bsp.:
Dim Q() As Variant, O() As Variant, r() As Variant, alpha() As Variant
Sub rtree_TEST()
...
HWOption = HullWhiteOption(callputflag, N, sigma, a, T, s, X, xdata, ydata)
Call prnQtree(s, N, jmax, Q())
...
Danke
mfg
imnag

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array aus Funktion rausholen
24.10.2005 09:47:24
MichaV
Hallo,
hier mal 3 Beispiele, wie Du Werte aus Prozeduren übergeben kannst:


Option Explicit
Sub Test1()
Dim i As Integer
Dim y As Integer
Dim a
i = 5
'Variable=Rückgabewert einer Funktion
y = Summe1(i)
MsgBox y
'Variable=Rückgabewert einer Sub (Argument mit ByRef übergeben!)
Call Summe2(i, y)
MsgBox y
'Variable=Array=Rückgabewert einer Funktion
a = Summe3(i)
MsgBox a(1)
MsgBox a(2)
MsgBox a(3)
End Sub
Function Summe1(a As IntegerAs Integer
Summe1 = a + 100
End Function
Sub Summe2(a As Integer, b As Integer)
b = a + 100
End Sub
Function Summe3(a As IntegerAs Variant
Dim b(1 To 3)
Dim i%
For i = 1 To 3
  b(i) = a + i * 10
Next
Summe3 = b
End Function



Ansonsten Guckst Du: Parameterübergabe und ihreTücken
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Array aus Funktion rausholen
24.10.2005 10:44:53
imnag
Hallo !
Danke für die Beispiele und den link , die sind sehr hilfreich.
Mein Problem sieht noch ein wenig differenzierter aus - hab daher Dein Bsp. entsprechend angepasst an mein Problem
Wie muß ich das untenstehende Beispiel nun verändern, dass ich die Varibale b(i) aus der Funktion in einer anderen Prozedur verwenden kann ?

Sub Test2()
Dim i As Integer
Dim y As Integer
Dim a
i = 5
'Variable=Array=Rückgabewert einer Funktion
a = Summe4(i)
' Wie kann ich nun den Array b(i) ausgeben ?
End Sub


Function Summe4(a As Integer) As Variant
Dim b(1 To 3)
Dim i%
Dim z As Integer
For i = 1 To 3
b(i) = a + i * 10
z = z + b(i)
Next
Summe4 = z
End Function

Anzeige
AW: Array aus Funktion rausholen
24.10.2005 11:31:47
MichaV
Hallo,
grundsätzlich brauchst Du die Variablen nur als Argument ByRef (das ist die Voreinstellung) übergeben, dann werden die in der Prozedur (Funktion oder Sub) ermittelten Werte automatisch zurückgegeben. Du kannst die Argumente beliebig erweitern und somit noch viele viele Rückgabewerte in eine Prozedur einbauen. Im Beispiel werden beide übergebenen Argumente b und i innerhalb der Funktion verändert:


Option Explicit
Sub Test2()
Dim i As Integer
Dim y As Integer
Dim a, b
i = 5
b = Array(1, 2, 3)     'nur zum Testen!
MsgBox "b Vor Summe4: " & Join(b, " - ")
'Variable=Array=Rückgabewert einer Funktion, zusätzlich wird b (vorher 1-2-3) durch die
'Funktion verändert, weil es ByRef (Default- Vorgabe) übergeben wird.
'Das passiert den meisten wohl unbeabsichtigt ;o) (Parameterübergabe und ihr Tücken)
a = Summe4(i, b)
MsgBox "b nach Summe4: " & Join(b, " - ")
'nur zum Veranschaulichen:
MsgBox "Aber Achtung! Variable i hat auch einen neuen Wert, weil ByRef übergeben: " & i
End Sub
Function Summe4(a As Integer, b As VariantAs Variant
Dim i%
Dim z As Integer
ReDim b(1 To 3)
For i = 1 To 3
  b(i) = a + i * 10
  z = z + b(i)
  Next
Summe4 = z
a = 42 'nur zum Veranschaulichen!
End Function



Ebenso könntest Du auf die Funktion verzichten und gleich schreiben:
Call Summe4(a, i, b)
und die Sub deklarierst Du so:
Sub Summe4(z As Variant, a As Integer, b As Variant)
Die Zeile Summe4 = z müsstest Du dann natürlich löschen.
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Array aus Funktion rausholen
24.10.2005 12:13:48
imnag
Hallo Micha !
Vielen Dank für Deine Hilfe, Du hast mir sehr weitergeholfen -
jetzt kenn ich mich aus und weiß wie ich mein Programm verändern muss.
Toll, dass man hier so konkrete und rasche Hilfe bekommt -
ich habe zum zweiten mal einen Beitrag geschrieben und jedesmal wirklich
erstklassige,rasche und vor allem problemlösende Antworten erhalten -
ich bin sehr begeistert von diesem Forum!!! Grosses LOB an alle!!!
lg
imnag
Bitte, gerne. Danke für Deine Rückmeldung. owT
24.10.2005 12:51:29
MichaV

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige