Logische Fehler
Logische Fehler bemerken Sie eigentlich nur anhand unerwarteter Ergebnisse des Programms. Aus Computer-Sicht ist nämlich alles in bester Ordnung. Ihr Programm macht exakt, was Sie geschrieben haben. Das ist nur nicht das, was Sie gemeint haben.
Betrachten Sie beispielsweise den folgenden Code, mit dem die ersten drei Einträge einer Collection gelöscht werden sollen (falls Sie bisher noch nicht mit Collections gearbeitet haben: das sind automatisch verwaltete Sammlungen gleichartiger Objekte. Die Aufzählungsobjekte wie Worksheets, Documents, QueryDefs etc. sind alle intern Collections):
Sub InCollectionFalschLoeschen()
Dim colDaten As New Collection
Dim i As Integer
colDaten.Add "a"
colDaten.Add "b"
colDaten.Add "c"
colDaten.Add "d"
colDaten.Add "e"
colDaten.Add "f"
colDaten.Add "g"
For i = 1 To 3
colDaten.Remove i
Next
Debug.Print colDaten(1)
Debug.Print colDaten(2)
Debug.Print colDaten(3)
End SubWie Sie im Direktfenster (Strg+G zum Anzeigen) kontrollieren können, sind keineswegs die ersten drei Einträge gelöscht, sondern diejenigen mit Indexnummer 1 ("a"), 3 ("c") und 5 ("e").
Das ist aber völlig korrekt, denn nach dem Löschen des ersten Eintrags rückt der ehemals zweite auf Position 1. Wenn Sie also jetzt im zweiten Schleifendurchlauf den jetzt zweiten Collection-Eintrag löschen, war dieser ursprünglich an Position 3.
Das folgende Listing zeigt, was Sie tatsächlich programmieren müssten:
Sub InCollectionRichtigLoeschen()
Dim colDaten As New Collection
Dim i As Integer
colDaten.Add "a"
colDaten.Add "b"
colDaten.Add "c"
colDaten.Add "d"
colDaten.Add "e"
colDaten.Add "f"
colDaten.Add "g"
For i = 1 To 3
colDaten.Remove 1
Next
Debug.Print colDaten(1)
Debug.Print colDaten(2)
Debug.Print colDaten(3)
End SubSie dürfen also nicht die ersten drei Einträge nacheinander löschen, sondern müssen dreimal den ersten (!) Eintrag entfernen.
Zum sicheren Erkennen logischer Fehler müssen Sie einen sehr hohen Aufwand treiben, weil diese gerade keine technischen Mängel enthalten.
Demgegenüber ist die letzte Kategorie von Fehlern, nämlich die Laufzeitfehler, leichter zu handhaben.
Dies ist eine Leseprobe
Möchten Sie den Beitrag komplett lesen? Dann werden Sie Probemitglied und testen Sie akademie.de 14 Tage kostenlos!
Auf VBA: Fehler und Fehlerbehandlung erfahren Sie mehr über diesen Beitrag und die weiteren Leseproben.
Weitere Informationen finden Sie auf unserer Infoseite zur Mitgliedschaft und in unseren AGB.
Ich bin bereits Mitglied