Syntax-Fehler, logische Fehler, Laufzeitfehler, Datentyp-Probleme
Logische Fehler
Logische Fehler
Auf dieser Seite
Mit Bild
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.
Mit Bild
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):
Mit Bild
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 Sub
Mit Bild
Wie 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").
Mit Bild
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.
Mit Bild
Das folgende Listing zeigt, was Sie tatsächlich programmieren müssten:
Mit Bild
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 Sub
Mit Bild
Sie dürfen also nicht die ersten drei Einträge nacheinander löschen, sondern müssen dreimal den ersten (!) Eintrag entfernen.
Mit Bild
Zum sicheren Erkennen logischer Fehler müssen Sie einen sehr hohen Aufwand treiben, weil diese gerade keine technischen Mängel enthalten.
Mit Bild
Demgegenüber ist die letzte Kategorie von Fehlern, nämlich die Laufzeitfehler, leichter zu handhaben.