Laufzeitfehler '6' Überlauf
Takahara
In der Zeile 69 stoppt der Debugger und es geht nicht weiter.
Ich verstehe die Fehlermeldung nicht, da mein Programm funktioniert, wenn ich für die Variable ugrid 10 oder 20 einsetze. Wenn ich den COde kopiere und nur die Verweise zu den entsprechenden Excel Sheets ändere bekomme ich die Fehlermeldung.
Den Code habe ich unten gepostet.
Sub calc33kVZsc_neu()
Dim i As Integer 'Zählindex
Dim j As Integer 'Anzahl der unterschiedlichen Widerstandsverschaltungsmöglichkeiten
Dim z(18, 9) As Double 'Vergleichsarray
Dim diff As Double 'Differenzvariable
Dim v As Double
Dim diff1 As Double
Dim x As Double
Dim row As Integer
Dim zgrid As Double
Dim ugrid As Integer
Dim isc(18, 0) As Integer
Dim dip(18, 4) As Double
Dim isctemp As Double
Dim zsctemp As Double
Dim zser As Double
Dim diptemp As Double
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Erase z
Erase isc
Erase dip
j = 120
diff = 200
' Werte einlesen
Sheets("33 kV overview").Activate 'Wechselt zum Sheet "10 kV overview"
Application.ScreenUpdating = False 'Unterdrückt die Anzeige des Sheetwechsels
zgrid = Range("B6").Value 'Grid Value
ugrid = Range("B1").Value 'Grid voltage
For i = 0 To 17
dip(i, 1) = Range("C" & CStr(i + 11)).Value 'Dip_soll value werden eingelesen
z(i, 1) = Range("F" & CStr(i + 11)).Value 'Zser_ist value werden eingelesen
z(i, 2) = Range("G" & CStr(i + 11)).Value 'Zsc_soll value werden eingelesen
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Werte berechnen
Sheets("sorted Table Zsc").Activate
For i = 0 To 17 '1. For-Schleife wird durchlaufen. Zsc_soll wird durchlaufen
v = z(i, 2)
diff = 200
For a = 4 To j '2. For-Schleife wird durchlaufen. Zsc-Tabelle wird nach dem passenden Wert für Zsc durchsucht
x = Range("B" & CStr(a)).Value
diff1 = Abs(v - x)
If diff "größer als" diff1 Then
diff = diff1
z(i, 3) = x 'Zsc_ist berechnet
z(i, 5) = Range("O" & CStr(a)).Value 'Anzahl der Spulen wird übernommen
z(i, 6) = Range("A" & CStr(a)).Value 'Index wird übernommen
End If
Next
Next
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Zsc wird neu ermittelt, um eine kleinere Dip-Abweichung zu erhalten
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For b = 0 To 17
isc(b, 1) = (ugrid * 1000) / (Sqr(3) * (z(b, 1) + z(b, 3) + zgrid)) 'Isc wird berechnet
dip(b, 1) = 100 * (isc(b, 0) * z(b, 3) * Sqr(3)) / (ugrid * 1000) 'Dip [%] wird berechnet
dip(b, 2) = Abs(dip(b, 0) - dip(b, 1)) 'Dip Abweichung von Wunsch-Dip
''''' Es wird geschaut, ob eine andere Konstellation möglich ist und die Dip-Abweichung kleiner wird'''''
If dip(b, 2) "größer als" 0.1 Then 'aktuelle Dip-Abweichung größer als 0,1
diff = dip(b, 2)
diff1 = dip(b, 0)
zser = z(b, 0)
For c = 4 To j '3. For-Schleife wird durchlaufen. Dip-Abweichung verkleinern
zsctemp = Range("B" & CStr(c)).Value
isctemp = (ugrid * 1000) / (Sqr(3) * (zser + zsctemp + zgrid)) 'Isc wird berechnet
diptemp = 100 * (isctemp * zsctemp * Sqr(3)) / (ugrid * 1000)
If Abs(diff1 - diptemp) "kleiner als" diff Then
diff = Abs(diff1 - diptemp)
z(b, 4) = zsctemp
z(b, 7) = Range("O" & CStr(c)).Value 'Anzahl der Spulen wird übernommen
z(b, 8) = Range("A" & CStr(c)).Value 'Index wird übernommen
End If
Next
End If
Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Array zusammen fügen
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For d = 0 To 17
If z(d, 4) = 0 Then
z(d, 4) = z(d, 3)
End If
isc(d, 0) = (ugrid * 1000) / (Sqr(3) * (z(d, 1) + z(d, 4) + zgrid)) 'Isc wird berechnet
dip(d, 3) = 100 * (isc(d, 0) * z(d, 4) * Sqr(3)) / (ugrid * 1000) 'Dip [%] wird berechnet
If z(d, 8) = 0 Then
z(d, 8) = z(d, 6)
End If
If z(d, 7) = 0 Then
z(d, 7) = z(d, 5)
End If
Next
' Werte ausgeben
Sheets("33 kV overview").Activate
For i = 0 To 17
Range("H" & CStr(i + 11)).Value = z(i, 4)
Range("N" & CStr(i + 11)).Value = z(i, 7)
Range("B" & CStr(i + 11)).Value = z(i, 8)
'Range("R" & CStr(i + 11)).Value = z(i, 4)
'Range("I" & CStr(i + 11)).Value = isc(i, 0)
' Range("Q" & CStr(i + 11)).Value = isc(i, 0)
'Range("R" & CStr(i + 11)).Value = dip(i, 0)
'Range("S" & CStr(i + 11)).Value = dip(i, 1)
'Range("T" & CStr(i + 11)).Value = dip(i, 2)
' Range("U" & CStr(i + 11)).Value = z(i, 3)
' Range("V" & CStr(i + 11)).Value = z(i, 4)
' Range("W" & CStr(i + 11)).Value = dip(i, 3)
' Range("z" & CStr(i + 11)).Value = z(i, 5)
' Range("AA" & CStr(i + 11)).Value = z(i, 7)
' Range("AD" & CStr(i + 11)).Value = z(i, 6)
' Range("AE" & CStr(i + 11)).Value = z(i, 8)
Next
Ist der Befehl zum Löschen des Arrayinhaltes "Erase" der richtige?
Vielen Dank im Vorraus.