PDA

Vollständige Version anzeigen : Prozedur: Parameter austauschen


gerrard87
22.04.2009, 16:24
Hallo Leute

Ich soll eine Prozedur schreiben, die 4 Zahlen als Parameter mit einem Programm austauscht, zu dem soll die Prozedur herrausfinden welcher der 3 Parameter der größte ist und als ergebnis mir die Nr. des Parameters(1,2 oder 3) als 4. Parameter wieder an das Main-Programmm zurückgeben.

Frage, löst man dies allgemein mit einer Function bzw. mit dem Befehl "ByRef"
Was ist mit austausch gemeint?

Hier mein bisheriger Quellcode:
Sub Parameter()

Dim a#, b#, c#, d#

a = InputBox("erste Zahl")
b = InputBox("zweite Zahl")
c = InputBox("dritte Zahl")

Call Prozedur(a, b, c, d)

MsgBox (d)

End Sub



Sub Prozedur(a, b, c, ByRef d)

If a > b Then
If a > c Then
d = 1

ElseIf b > c Then
d = 2

Else: d = 3

End If

End If

End Sub

jinx
22.04.2009, 16:47
Moin, gerrard87,

siehe http://www.ms-office-forum.net/forum/showthread.php?t=249767...

ransi
22.04.2009, 16:47
HAllo

Da machst du es dir aber unnötig schwer.
Machs so:
<div style="background-color:#FFFFFF; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><span style="color:#000080"; >Option</span> <span style="color:#000080"; >Explicit</span><br /><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> Aufruf()</b><br /><span style="color:#000080"; >Dim</span> I() <span style="color:#000080"; >As</span> <span style="color:#000080"; >Variant</span><br /><span style="color:#000080"; >Dim</span> d <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span><br />I = Array(-0.00123, 23, 45, 2.5)<br />Prozedur I, d<br />MsgBox d<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /><br /><b><span style="color:#000080"; >Public</span> <span style="color:#000080"; >Sub</span> Prozedur(<span style="color:#000080"; >ByVal</span> arr <span style="color:#000080"; >As</span> Variant, <span style="color:#000080"; >ByRef</span> a <span style="color:#000080"; >As</span> <span style="color:#000080"; >Long</span>)</b><br />a = WorksheetFunction.Match(WorksheetFunction.Max(arr), arr, 0)<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Sub</span></b><br /></span></nobr></div>

ransi

gerrard87
22.04.2009, 16:54
hehe danke, wohl auch einer aus meiner schule :grins:

Was ich immernoch nicht recht verstehe ist das austauschen, kann mir es einer erläutern bzw. mal zeigen wie das funktioniert, ich habe es im moment so hier stehen, stimmt das bei mir mit dem vertauschen?

Sub Parameter()
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double

a = InputBox("1.Zahl")
b = InputBox("2.Zahl")
c = InputBox("3.Zahl")

austauschen a, b, c, d

MsgBox "d"
End Sub

Function austauschen(ByRef a As Double, ByRef b As Double, ByRef c As Double, ByRef d As Double)

If a > b Then
d = 1
Else: d = 2
End If
If a > c Then
d = 1
Else: d = 3
End If
If b > c Then
d = 2
Else: d = 3
End If
End Function

Nepumuk
22.04.2009, 17:14
Hi,

geht's nicht noch ein wenig komplizierter? Bei drei Zahlen benötigst du maximal 2 Abfragen.

<nobr><span style="font-family:Courier New,Arial; font-size:9pt ;" ><b><span style="color:#000080"; >Function</span> austauschen(<span style="color:#000080"; >ByRef</span> a <span style="color:#000080"; >As</span> Double, <span style="color:#000080"; >ByRef</span> b <span style="color:#000080"; >As</span> Double, <span style="color:#000080"; >ByRef</span> c <span style="color:#000080"; >As</span> Double, <span style="color:#000080"; >ByRef</span> d <span style="color:#000080"; >As</span> <span style="color:#000080"; >Double</span>)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >If</span> a &gt; b <span style="color:#000080"; >And</span> a &gt; c <span style="color:#000080"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d = 1<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >ElseIf</span> b &gt; a <span style="color:#000080"; >And</span> b &gt; c <span style="color:#000080"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d = 2<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d = 3<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#000080"; >End</span> <span style="color:#000080"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><b><span style="color:#000080"; >End</span> <span style="color:#000080"; >Function</span></b><br /></span></nobr>
Ihr hättet in eurer Jugend etwas mehr Mastermind und etwas weniger Counter-Strike spielen sollen. Das macht das Hirn weich. :p

gerrard87
22.04.2009, 17:21
merci!

Und das Programm ist nun soweit auch richtig, auch das "austauschen" was ich nicht verstehe findet dort auch statt? ^^

Nepumuk
23.04.2009, 09:07
Hallo,

na das Programm und die Funktion tauschen die Parameterwerte miteinander aus:

Programm gibt Parameter an Funktion - Funktion gibt Parameter an Programm.