josefhader
Grünschnabel
Warum bekomme ich beim 2. mal durchlaufen bei der fett gedruckten zeile den fehler index außerhalb des bereichs?
Laufzeitfehler '9'
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call berechnen
End Sub
Public Sub berechnen()
Dim varArrayX As Variant, varArrayY As Variant, varArrayZ As Variant, varArrayK As Variant
Dim intIndex As Long
Dim i As Long
i = 0
i = i + 1
Do While Cells((2 + i), 5) Eqv 0
varArrayX = Split(Cells((i + 2), 22), ";") 'Zelle mit dem beschädigten durchmesser
varArrayY = Split(Cells((i + 2), 24), ";") 'Zelle mit dem Rollendurchmesser
varArrayZ = Split(Cells((i + 2), 23), ";") 'Zelle mit dem Gewicht der Beschädigten Rolle
varArrayK = Split(Cells((i + 2), 26), ";") 'Zelle mit durchschnittlichen Durchmesser
If UBound(varArrayX) = UBound(varArrayY) Then
If CDec(varArrayY(intIndex)) <= 0.95 * CDec(varArrayK(intIndex)) Then
For intIndex = 0 To UBound(varArrayX)
Cells(intIndex + (i + 2), 25) = ((400 * CDec(varArrayY(intIndex)) * (CDec(varArrayK(intIndex)) - CDec(varArrayY(intIndex))) / (CDec(varArrayK(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100) * (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
Next
Else
For intIndex = 0 To UBound(varArrayX)
Cells(intIndex + (i + 2), 25) = (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
'Ausgabe in Spalte B
Next
End If
Else
MsgBox "In den Zelle für Beschädigter- Eingesetzte Rollendurchmesser und Rollen gewicht ist die Anzhal von Zahlen unterschiedlich." & vbLf & "Programmabbruch.", 16, "Fehler"
End If
Loop
End Sub
dank im voraus
Laufzeitfehler '9'
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call berechnen
End Sub
Public Sub berechnen()
Dim varArrayX As Variant, varArrayY As Variant, varArrayZ As Variant, varArrayK As Variant
Dim intIndex As Long
Dim i As Long
i = 0
i = i + 1
Do While Cells((2 + i), 5) Eqv 0
varArrayX = Split(Cells((i + 2), 22), ";") 'Zelle mit dem beschädigten durchmesser
varArrayY = Split(Cells((i + 2), 24), ";") 'Zelle mit dem Rollendurchmesser
varArrayZ = Split(Cells((i + 2), 23), ";") 'Zelle mit dem Gewicht der Beschädigten Rolle
varArrayK = Split(Cells((i + 2), 26), ";") 'Zelle mit durchschnittlichen Durchmesser
If UBound(varArrayX) = UBound(varArrayY) Then
If CDec(varArrayY(intIndex)) <= 0.95 * CDec(varArrayK(intIndex)) Then
For intIndex = 0 To UBound(varArrayX)
Cells(intIndex + (i + 2), 25) = ((400 * CDec(varArrayY(intIndex)) * (CDec(varArrayK(intIndex)) - CDec(varArrayY(intIndex))) / (CDec(varArrayK(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100) * (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
Next
Else
For intIndex = 0 To UBound(varArrayX)
Cells(intIndex + (i + 2), 25) = (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 12)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
'Ausgabe in Spalte B
Next
End If
Else
MsgBox "In den Zelle für Beschädigter- Eingesetzte Rollendurchmesser und Rollen gewicht ist die Anzhal von Zahlen unterschiedlich." & vbLf & "Programmabbruch.", 16, "Fehler"
End If
Loop
End Sub
dank im voraus