Funktion funktioniert falsch
20.05.2024 20:08:41
Fred
den ganzen Nachmittag an diesem Ding und nun muss ich doch im Forum um Hilfe bitten.
Ich habe eine Funktion, die die "Zwischenstände" eines Spiels in Zellen einfügt.
Die Funktion macht ihren Fehler, wenn eine der Zellen - auf die sich bezogen wird - eine Leerzelle ist.
Kann ein Profi bitte mal drauf schaun und lösen:
https://www.herber.de/bbs/user/169592.xlsb
die Function:
Function Zwischenstand(GU As String, GV As String, n As Integer) As String
Dim GUArray() As String, GVArray() As String
Dim Treffers() As String
Dim i As Integer, j As Integer
Dim ToreA As Integer, ToreB As Integer
Dim TreffersCount As Integer
' GU-Werte in ein Array aufteilen
If GU > "" Then
GUArray = Split(GU, " ")
Else
ReDim GUArray(0)
GUArray(0) = "1E+99" ' Ein sehr großer Wert, falls GU leer ist
End If
' GV-Werte in ein Array aufteilen
If GV > "" Then
GVArray = Split(GV, " ")
Else
ReDim GVArray(0)
GVArray(0) = "1E+99" ' Ein sehr großer Wert, falls GV leer ist
End If
' Kombiniere beide Arrays
ReDim Treffers(UBound(GUArray) + UBound(GVArray) + 1)
TreffersCount = 0
For i = 0 To UBound(GUArray)
Treffers(TreffersCount) = GUArray(i) & "A"
TreffersCount = TreffersCount + 1
Next i
For i = 0 To UBound(GVArray)
Treffers(TreffersCount) = GVArray(i) & "B"
TreffersCount = TreffersCount + 1
Next i
' Sortiere das kombinierte Array
For i = 0 To TreffersCount - 2
For j = i + 1 To TreffersCount - 1
If Val(Treffers(i)) > Val(Treffers(j)) Then
Dim temp As String
temp = Treffers(i)
Treffers(i) = Treffers(j)
Treffers(j) = temp
End If
Next j
Next i
' Zähle die Tore bis zum n-ten Treffer
ToreA = 0
ToreB = 0
For i = 0 To n - 1 ' Nur die ersten n Treffer berücksichtigen
If i = UBound(Treffers) Then
If Right(Treffers(i), 1) = "A" Then
ToreA = ToreA + 1
ElseIf Right(Treffers(i), 1) = "B" Then
ToreB = ToreB + 1
End If
End If
Next i
' Ergebnis nun zurückgeben
Zwischenstand = ToreA & "-" & ToreB
End Function
Gruss
Fred
Anzeige