Hallo Nick,
das ist das selbe als wenn ich dich fragen würde. Ich fahre einen Mercedes und nun faehrt er nicht mehr. Weisst du was los ist?
Es kann soviele Ursachen haben! Sei es programmiertechnisch oder das es ein Control auslöst!
Ich selber hatte mal ein Datagrid in meinen Project gehabt. Als ich ihr sep. Spalten zugeordnet habe und 1 ! Spalte eine bestimmte Formatierung gegeben habe, so stuerzte mein VB mit der besagten Fehlermeldung ab. Dies trat beim initialisieren des Grids auf.
Es ist rel. schwer den Fehler auf die schliche zu kommen!
Aber lasse dir mal in jeder sub / Function eine MSGBox aufgehen, wo du dir die Sub anzeigen laesst! Wenn nun dein VB abstürzt, so weisst du in welcher sub er als letztes war und du kannst dann dort den Fehler suchen. Zur Not lasse dir jede Zeile in dieser Sub anzeigen ( UEber eine MSGBOX) so kennst du nun die Zeile des Source, welches den Fehler auslöst.
Alternativ baue eine Fehlerroutine. Führe dort eine Zeile des Quelltextest aus! Löse danach den Fehler 13 aus ( Führt nicht zu einem Prog. Absturz) In der Fehlerroutine, rufst du eine Sub auf, was dir sagt. In der Sub und die Zeile wurde ERFOLGREICH ausgeführ. Danach setze den Fehler zurueck und führe die naechste zeile aus etc.
So siehst du auch in welcher zeile der Fehler auftrat! Fehler 13 = zeile erfolgreich . Sprich in der naechsten Zeile ist der Fehler! Wenn du Glueck hast, wird sogar dieser schwerliegende Fehler protokolliert!
Hört sich kompliziert an? ist es nicht .Hier ein kleines Demo!
Form und 2 Buttons -> Command1 und Command2
Option Explicit
Private Sub Command1\_Click()
On Error GoTo fehler
Dim x&
'Sinnlose Anweisung-\> Hier ersetzen mit deinen Anweisungen!
'Bedenke das err.raise 13 die protokollierung auslöst
'Sprich nach jeder Zeile schreiben. Du kannst natuerlich jeden anderen Fehler auslösen!
10 x = x: Err.Raise 13
20 x = x + 1: Err.Raise 13
30 Exit Sub
fehler:
Call ErrHandling("Command1\_Click", Erl)
Err.Clear
Resume Next
End Sub
Private Sub Command2\_Click()
On Error GoTo fehler
Dim z&
'Sinnlose Anweisung-\> Hier ersetzen mit deinen Anweisungen!
'Bedenke das err.raise 13 die protokollierung auslöst
'Sprich nach jeder Zeile schreiben. Du kannst natuerlich jeden anderen Fehler auslösen!
10 z = z: Err.Raise 13
20 z = z + 1: Err.Raise 13
30 Exit Sub
fehler:
Call ErrHandling("Command1\_Click", Erl)
Err.Clear
Resume Next
End Sub
Private Sub Form\_Load()
On Error GoTo fehler
Dim y&
'Sinnlose Anweisung-\> Hier ersetzen mit deinen Anweisungen!
'Bedenke das err.raise 13 die protokollierung auslöst
'Sprich nach jeder Zeile schreiben. Du kannst natuerlich jeden anderen Fehler auslösen!
10 y = y: Err.Raise 13
20 y = y + 1: Err.Raise 13
30 Exit Sub
fehler:
Call ErrHandling("Form\_Load", Erl)
Err.Clear
Resume Next
End Sub
Private Sub ErrHandling(Prozedure As String, Zeile As Long)
Dim FNr As Byte
FNr = FreeFile
Open "DeinFile" For Append As #FNr
Print #FNr, "Von der Procedure / Function " & Prozedure & " wurde die Zeile " & Zeile & " erfolgreich ausgefuehrt!"
Close #FNr
End Sub
Probiere das mal aus. Mit etwas Glueck siehst du den Fehler dort schon! Ansonsten wird es komplizierter den Fehler zu suchen!
MfG Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]