Hallo zusammen!!!
Ich habe da eine Prozedur, die merkwürdige Sachen macht:
Public Sub phaseB(tabl#(), veb2%)
Debug.Print "********************* Phase B ********************************"
Dim pivotspalteB#()
Dim pivotzeileB#()
ReDim Preserve pivotzeileB(n + 1)
ReDim Preserve pivotspalteB(m + p)
ReDim Preserve tablneu(m + p, n + 1)
Dim pivotelementB#
Dim pivotzeilenrB%
Dim pivotspaltenrB%
For i = 1 To m + p
For j = 1 To n + 1
Debug.Print "Tableau= " & tabl(i, j)
Next
Next
Dim zahl%
zahl = 0
For i = 1 To m + p
If tabl(i, veb2) <> 0 Then
zahl = zahl + 1
End If
Next
Debug.Print "zahl = " & zahl
Debug.Print "veb2 = " & veb2
If zahl = 0 Then
veb2 = veb2 + 1
If veb2 > n Then
'd.h. es gibt nur die gleichungen, hier STOP!!
Exit Sub
End If
phaseB tabl, veb2
End If
For i = 1 To n
If tabl(i, veb2) <> 0 Then
pivotelementB = tabl(i, veb2)
pivotspaltenrB = veb2
pivotzeilenrB = i
Debug.Print "pivotelementB = " & pivotelementB
For j = 1 To m + p
pivotspalteB(j) = tabl(j, pivotspaltenrB)
Debug.Print "pivotSpalte B =" & pivotspalteB(j)
Next
For l = 1 To n + 1
pivotzeileB(l) = tabl(pivotzeilenrB, l)
Debug.Print "pivotZeile B = " & pivotzeileB(l)
Next
End If
Exit For
Next
'Dieses Teil hier unten wird 2 mal ausgegeben, beim 2ten mal wird alles auf null gesetzt!!!!!
'Austauschschritt
For i = 1 To m + p
For j = 1 To n + 1
'tablneu(i, j) = tabl(i, j) - (pivotzeileB(j) * pivotspalteB(i) / pivotelementB)
Debug.Print tablneu(i, j) & "=" & tabl(i, j) & "-" & pivotzeileB(j) & "*" & pivotspalteB(i) & "/ _
" & pivotelementB
Next j
Next i
For i = 1 To m + p
For j = 1 To n + 1
tabl(i, j) = tablneu(i, j)
Debug.Print "Tableau neu= " & tabl(i, j)
Next
Next
End Sub
Die tabl#() ist eine Matrix, wird von einer anderen Prozedur übergeben, sie ist als Public definiert.
Die veb2% ist eine Zahl, und ebenfalls als Public definiert und wird von einer anderen Prozedur übergeben.
Mit dem Befehl Debug.Print lasse ich immer die Zwischenergebnisse im Direktfenster ausgeben, für Kontrolle.
Was ich nicht verstehe, wenn ich diese Prozedur ausführen lassen, dann ruft sich selbstängig noch einem Durchlauf erneut auf, dass sehe ich an den Ausgaben im Direktfenster. Nich allea wird 2mal ausgegeben, nur die letzten beide Teile.
Beim 1-ten Durchlauf macht die Prozedur dass, was sie machen muss. Aber beim 2-ten Durchlauf werden alle bisherigen Parameter auf Null gesetzt, die Ergebnisse sind dann unbrauchbar.
Kann mir jemand sagen, woran das liegt, und wie kann ich es verhindern, das die Prozedur sich nicht 2mal aufruft.??
Ich habe schon mit Exit Sub am Ende versucht, bringt troztdem nichts.
Danke Euch.
Schöne Grüße
Julia