josefhader
Grünschnabel
Habe probleme mit dem intindex wenn ich in den Zellen x,y,z mehr als eine zahl eingebe bekomme ich den fehler:
Index außerhalb gültigen bereichs
Hier ist mein code:
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
Do While Cells((3 + i), 5) > 1000
i = i + 1
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
For intIndex = 0 To UBound(varArrayX)
If CDec(varArrayY(intIndex)) <= 0.95 * CDec(varArrayK(intIndex)) Then
Cells(intIndex + (i + 2), 25) = ((400 * CDec(varArrayY(intIndex)) * (CDec(varArrayK(intIndex)) - CDec(varArrayY(intIndex))) / (CDec(varArrayK(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100) * (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
Else
Cells(intIndex + (i + 2), 25) = (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
'Ausgabe in Spalte B
End If
Next
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
bitte kann mir jemand einen tipp geben
Index außerhalb gültigen bereichs
Hier ist mein code:
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
Do While Cells((3 + i), 5) > 1000
i = i + 1
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
For intIndex = 0 To UBound(varArrayX)
If CDec(varArrayY(intIndex)) <= 0.95 * CDec(varArrayK(intIndex)) Then
Cells(intIndex + (i + 2), 25) = ((400 * CDec(varArrayY(intIndex)) * (CDec(varArrayK(intIndex)) - CDec(varArrayY(intIndex))) / (CDec(varArrayK(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100) * (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
Else
Cells(intIndex + (i + 2), 25) = (400 * CDec(varArrayX(intIndex)) * (CDec(varArrayY(intIndex)) - CDec(varArrayX(intIndex))) / (CDec(varArrayY(intIndex)) ^ 2 - (Cells((i + 2), 18)) ^ 2)) / 100 * (CDec(varArrayZ(intIndex)))
'Ausgabe in Spalte B
End If
Next
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
bitte kann mir jemand einen tipp geben