Ich habe meinen Code schrittweise ausgeführt, und da ist mir aufgefallen, dass die Sub überhaupt nicht aufgerufen wurde. Wie kann das sein?
Ich habe keine Ahnung da bei dem von mir geposteten Code natürlich die Sub aufgerufen wird und dann ihrerseits die Function aufruft.
Als Fehler bzw. problematische Dinge in DEinem Code erachte ich im Übrigen (ergänzend zu den Aussagen von Jürgen):
array ist ein Schlüsselwort in Basic und darf/sollte nicht als Variablennamen verwendet werden
funktioniert nur für Ganzzahlen und sollte auch nicht in einer Funktion gleichen Namens verwendet werden
Was genau geschieht dort?
definiert die Konstante N mit Wert 5
Deklariert das Array a
weist dem Array Werte zu
Gibt das Ergebnis der Funktion in Verknüpfung mit einerm String aus
deklariert Variablen
weist der Variable MinX den Wert des Feldes mit Index 0 der Array-Variable ar zu
Schleife zählt von 0 bis 4 (bei anzahl = 5)
prüft Wert
weist der Variable MinX den Wert des Feldes mit Index i der Array-Variable ar zu
Ende der If-Schleife
Ende der For-Next-Schleife
weist der Funktion MinD den Wert der Variable MinX als Rückgabewert zu
Ich glaube daher kam auch mein Fehler "Argument ist nicht optional".
Der kommt wohl eher von der Verwendiung von "array" als Variablen-Namen, ich habs aber nicht getestet
wird ja ein Array erzeugt
Nein, es werden nur einem bereits existierenden Array Werte zugfewiesen
wieso kann ich mir dieses Array nicht per "MsgBox"ausgeben?
weil es kein 'zusammenhängender Ausdruck' ist, Du must also beispielsweise einen String erzeugen
Code: Alles auswählen
Dim bla As String
bla = ""
For i = 0 To 4
bla = bla & a(i) & CHR(13)
Next i
Msgbox bla
Was meinst du mit "Sub manuell starten"?
Ist jetzt wirklich nicht Dein Ernst? Die Antwort ist in der Basic-IDE auf die SChaltfläche "Basicprogramm ausführen" klicken oder in der normalen Programmumgebung das Makro über den 'Makros verwalten'-Dialog aufrufen.
Wenn ich mein Basic-Programm ausführe müssen doch alle "Sub" und "Func" ausgegeben werden, oder etwa nicht?
Nein, und im Übrigen nicht "ausgegeben" sondern ausgeführt.
Gruß
Stephan
[quote]Ich habe meinen Code schrittweise ausgeführt, und da ist mir aufgefallen, dass die Sub überhaupt nicht aufgerufen wurde. Wie kann das sein?[/quote]
Ich habe keine Ahnung da bei dem von mir geposteten Code natürlich die Sub aufgerufen wird und dann ihrerseits die Function aufruft.
Als Fehler bzw. problematische Dinge in DEinem Code erachte ich im Übrigen (ergänzend zu den Aussagen von Jürgen):
[code]Function MinD (array as Double, anzahl as Integer)[/code]
array ist ein Schlüsselwort in Basic und darf/sollte nicht als Variablennamen verwendet werden
[code]Dim MinD as Integer[/code]
funktioniert nur für Ganzzahlen und sollte auch nicht in einer Funktion gleichen Namens verwendet werden
[quote]Was genau geschieht dort?[/quote]
[code]Const N=5[/code]
definiert die Konstante N mit Wert 5
[code]Dim a(N) as Double[/code]
Deklariert das Array a
[code]a(0)=1.1 : a(1)=1 : a(2)=1 : a(3)=2 : a(4)=0.5[/code]
weist dem Array Werte zu
[code]Msgbox "Kleinste Zahl = " & MinD(a,N)[/code]
Gibt das Ergebnis der Funktion in Verknüpfung mit einerm String aus
[code]Dim i as Integer
Dim MinX as Double[/code]
deklariert Variablen
[code]MinX = ar(0)[/code]
weist der Variable MinX den Wert des Feldes mit Index 0 der Array-Variable ar zu
[code]For i=0 to anzahl-1[/code]
Schleife zählt von 0 bis 4 (bei anzahl = 5)
[code]if ar(i)< MinX then[/code]
prüft Wert
[code]MinX=ar(i)[/code]
weist der Variable MinX den Wert des Feldes mit Index i der Array-Variable ar zu
[code]end if[/code]
Ende der If-Schleife
[code]Next i[/code]
Ende der For-Next-Schleife
[code]MinD = MinX[/code]
weist der Funktion MinD den Wert der Variable MinX als Rückgabewert zu
[quote]Ich glaube daher kam auch mein Fehler "Argument ist nicht optional".[/quote]
Der kommt wohl eher von der Verwendiung von "array" als Variablen-Namen, ich habs aber nicht getestet
[quote]wird ja ein Array erzeugt[/quote]
Nein, es werden nur einem bereits existierenden Array Werte zugfewiesen
[quote]wieso kann ich mir dieses Array nicht per "MsgBox"ausgeben?[/quote]
weil es kein 'zusammenhängender Ausdruck' ist, Du must also beispielsweise einen String erzeugen
[code]Dim bla As String
bla = ""
For i = 0 To 4
bla = bla & a(i) & CHR(13)
Next i
Msgbox bla[/code]
[quote]Was meinst du mit "Sub manuell starten"?[/quote]
Ist jetzt wirklich nicht Dein Ernst? Die Antwort ist in der Basic-IDE auf die SChaltfläche "Basicprogramm ausführen" klicken oder in der normalen Programmumgebung das Makro über den 'Makros verwalten'-Dialog aufrufen.
[quote]Wenn ich mein Basic-Programm ausführe müssen doch alle "Sub" und "Func" ausgegeben werden, oder etwa nicht?[/quote]
Nein, und im Übrigen nicht "ausgegeben" sondern ausgeführt.
Gruß
Stephan