Thema Datum  Von Nutzer Rating
Antwort
22.04.2009 17:00:09 Patrick
NotSolved
22.04.2009 18:04:08 Holger
NotSolved
Rot Aw:Aw:Mehrere Paramter übergeben
23.04.2009 10:17:38 Holger
NotSolved
22.04.2009 18:13:30 Patrick
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
23.04.2009 10:17:38
Views:
1172
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Mehrere Paramter übergeben
Hallo Patrick,
wenn du meinen Vorschlag unverändert als Lösung deines Problems ansiehst, musst du Schiffsbruch erleiden. Ich schrieb ja ausdrücklich, dass du die Prozedur für deine Zwecke anpassen musst. Ich kann nicht immer fertige Lösungen verschicken, zumal ich davon ausgehe, dass du das Programmieren gerade erlernst und von daher auch eine eigene Leistung in die Aufgaben stecken willst (oder zumindest solltest). Oft reicht die Spezifikation auch nicht, um die Aufgabe wirklich abschließend zu behandeln. Bei dir fehlt z.B. eine Angabe, was passieren soll, wenn es zwei oder drei größte Werte gibt.
In meinem Beispiel übergibt die Prozedur testen_Tausch die Werte 2, 6 und 8 an die Prozedur Tausch, die sie in ihre Varaiblen a, b, und c schreibt. Anstellen 2,6,8 musst du natürlich deine Variablen einsetzen, z.B.
tausch Val(Inputbox("1. Wert")), Val(Inputbox("2. Wert")), Val(Inputbox("3. Wert")), a
Tausch schreibt die Nummer des größten Wertes oder bei Gleichheit die höhere Nummer (1,2 oder 3) in ihre Variable d und gibt den Ablauf des Programms an Testen_Tausch zurück. Bei Tausch ist d das vierte Argument, deshalb übernimmt testen_Tausch diesen Wert in die Variable, die an vierter Stelle beim Aufruf von Tausch steht, also in a und gibt diesen Wert aus. Die beiden a in den Prozeduren haben nichts miteinander zu tun, da es bei der Übergabe nur auf die Stellung der Argumente in der Argumentenliste ankommt und jede Prozedur ihre eigenen Variablen hat (zumindest solange sie nicht öffentlich deklariert wurden).
Studiere doch etwas die VBA-Hilfe, z.B. zu "Übergeben von Argumenten". Vielleicht wird dir dann klarer, was abläuft.
Gruß
Holger



Holger schrieb am 22.04.2009 18:04:08:

Hallo Patrick,
vielleicht kannst du folgende Subs anpassen:
Sub tausch(ByVal a, ByVal b, ByVal c, d)
d = 3
If b > c Then d = 2: c = b
If a > c Then d = 1
End Sub

Sub testen_Tausch()
tausch 2, 6, 8, a
MsgBox a
End Sub

Gruß
Holger

Patrick schrieb am 22.04.2009 17:00:09:

Hallo,

ich habe hier ein bzw. mehrere Probleme.
Hier mal eines:

Ich habe folgende Aufgabenstellung:

Schreiben Sie eine Prozedur, die vier Zahlen als Paramter mit einem aufrufenden Programm austauscht. Die Prozedur soll ermitteln, welcher der ersten drei Paramater der größte ist und die Nummer des Paramters (1,2 oder 3) als vierten Paramter wieder an das Hauptprogramm zurückgeben.

Soweit bin ich bis jetzt gekommen:


Sub Zahlen() 'Prozedurstart

Dim z1 As Integer, z2 As Integer, z3 As Integer
Dim z4 As Integer

'Deklaration der Variablen im Wertebereich Integer; nur ganze Zahlen möglich

z1 = 2
z2 = 1
z3 = 4

Tausch z1,z2,z3 'Aufruf der Prozedur Tausch mit Parameterübergabe

MsgBox ("Der größte Wert ist " & z4)

End Sub

Sub Tausch(ByRef z4) 'Prozedur Tausch Rückgabe des Parameters z4 als größte Zahl

If z1 > z2 Then 'Überprüfung des größten Betrages der Variablen z1,z2,z3 mit einer If Kontrollstruktur
z1 = z4
ElseIf z1 z3 Then
z1 = z4
ElseIf z1 z3 Then
z2 = z4
Else
z3 = z4

'Der größte Wert wird in der Variable z4 gespeichert und an das Hauptprogramm übergeben
End If


End Sub


Allerdings bekomm ich da die Fehlermeldung bei dem Aufruf der Prozedur Tausch : Falsche Anzahl an Argumenten...
Ich bekomm das einfach nicht hin. Mal abgesehen davon, dass mein Programm sowieso nicht ganz der Aufgabenstellung entspricht.

Ich bitte dringend um Hilfe

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.04.2009 17:00:09 Patrick
NotSolved
22.04.2009 18:04:08 Holger
NotSolved
Rot Aw:Aw:Mehrere Paramter übergeben
23.04.2009 10:17:38 Holger
NotSolved
22.04.2009 18:13:30 Patrick
NotSolved