Laufzeitfehler "11" Division durch Null
25.11.2014 10:46:50
Patrick
ich habe mir eine Art Haushaltstagebuch zusammengebastelt (trifft es bei meinen Kenntnissen) das ich auf einer Windows-Workstation erstellt habe. Jetzt wollte ich das ganze auf meinem MacBookPro laufen lassen und ich bekomme den Laufzeitfehler "11" mit der Fehlermeldung Division durch Null.
Das komische daran ist, das es sich nicht um eine Division handelt. Der Fehler kommt bei meinem Fortschrittsbalken (Uferform) in der Zeile: Laenge3 = Laenge3 + Schritt3.
Bisher habe ich 3 Lösungen für das Problem gefunden, die ich gerne umgehen würde. Vielleicht kann es mir ja jemand erklären wo ich die Ursache finden kann.
Lösung1: Die Zeile Laenge3 = Laenge3 + Schritt3 und UfBalken.Label8.Width = Länger weg lassen. Dadurch funktioniert der Fortschrittsbalken nicht mehr so wie er soll.
Lösung2: Die Zeile Debug.Print Laenge3 vorher einfügen.
Auch wenn es der einfachste Lösungsweg ist, finde ich ihn nicht toll.
Lösung3: Die Zeile DoEvents entfernen. Damit setze ich dann aber den ganzen Fortschrittsbalken außer Betrieb weil die Ansicht nicht mehr neu aufgebaut wird.
So, hier nun der Ausschnitt in dem sich der Fehler befindet.
Sub Progressbar()
Dim AktuelleZeile As Integer
Dim AktuellZeileVon As Integer
Dim AktuellesBlatt As String
Dim MeinTyp As String
'Anzahl der zu berechnenden Zeilen/Blättern/Berechnungen
PubVar.SW1 = PubVar.NichtAktZeilenArray(1)
PubVar.SW2 = UBound(PubVar.NichtAktSeitenArray)
PubVar.SW3 = Allgemein.FuAnzahlZeilenZumAktAusArray
UfBalken.Label3.Caption = _
"0 von " & PubVar.NichtAktZeilenArray(1) & " Zeilen."
UfBalken.Label6.Caption = "0 von " & UBound(PubVar.NichtAktSeitenArray) & " Blättern."
UfBalken.Label9.Caption = "Gesammtvortschritt: 0 %"
'Wie viel kommt pro Durchlauf zum Balken dazu
Schritt1 = UfBalken.Label1.Width / PubVar.SW1
Schritt2 = UfBalken.Label4.Width / PubVar.SW2
Schritt3 = UfBalken.Label7.Width / PubVar.SW3
'Schleife über die Blätter
For Blatt = 1 To UBound(PubVar.NichtAktSeitenArray)
'Startwerte für die Variablen setzen
Laenge1 = 0
UfBalken.Label2.Width = Laenge1
'Anzahl der zu berechnenden Zeilen dieses Blattes
PubVar.SW1 = PubVar.NichtAktZeilenArray(Blatt)
'Wie viel kommt pro Durchlauf zum Balken dazu
Schritt1 = UfBalken.Label1.Width / PubVar.SW1
'Erste nicht aktuelle Zeile bestimmen
AktuellZeileVon = FuAktuelleAnfangszeile(CStr(PubVar.NichtAktSeitenArray(Blatt)))
'Aktuelles Blatt als String speichern
AktuellesBlatt = PubVar.NichtAktSeitenArray(Blatt)
MeinTyp = Sheets(AktuellesBlatt).Cells(3, 1).Value
For AktuelleZeile = AktuellZeileVon To ZEILEBIS
'Code abarbeiten
Application.Run MeinTyp, AktuellesBlatt, AktuelleZeile
'Balken für die Zeile anpassen
Laenge1 = Laenge1 + Schritt1
UfBalken.Label2.Width = Laenge1
UfBalken.Label3.Caption = _
Format((AktuelleZeile - AktuellZeileVon + 1) & _
" von " & ZEILEBIS - AktuellZeileVon + 1) & " Zeilen."
DoEvents
Gesammtfortschritt = Gesammtfortschritt + 1
'Balken für den Gesammtfortschritt
Laenge3 = Laenge3 + Schritt3
UfBalken.Label8.Width = Laenge3
UfBalken.Label9.Caption = "Gesammtfortschritt: " & _
CInt(Gesammtfortschritt / Allgemein.FuAnzahlZeilenZumAktAusArray * 100) & " %"
Next AktuelleZeile
'Tabellenblatt auf Aktuell setzen
Zeile = PubVar.ZEILEVON
Do While Not Hilfsseite3.Cells(Zeile, 3) = "" And _
Not Hilfsseite3.Cells(Zeile, 3) = AktuellesBlatt
Zeile = Zeile + 1
Loop
Hilfsseite3.Cells(Zeile, 7).Interior.ColorIndex = 4
'Balken für die Blätter anpassen
Laenge2 = Laenge2 + Schritt2
UfBalken.Label5.Width = Laenge2
UfBalken.Label6.Caption = _
Blatt & " von " & UBound(PubVar.NichtAktSeitenArray) & " Blättern."
Next Blatt
End Sub