Index ausserhalb des gültigen Bereichs

Hallo Leute, hab zur Zeit ein ganz komisches Problem.
Wenn ich mein Programm beende bekomme ich immer den Laufzeitfehler Nr. 9 --> Index ausserhalb des gültigen Bereiches.
Ich verwende den normalen Standard - Code:

Private Sub Form\_Unload(Cancel As Integer)
 Dim i As Integer

 'close all sub forms
 For i = Forms.Count - 1 To 1 Step -1
 MsgBox i
 Unload Forms(i)
 Next

 If Me.WindowState vbMinimized Then
 SaveSetting App.Title, "Settings", "MainLeft", Me.Left
 SaveSetting App.Title, "Settings", "MainTop", Me.Top
 SaveSetting App.Title, "Settings", "MainWidth", Me.Width
 SaveSetting App.Title, "Settings", "MainHeight", Me.Height
 End If

End Sub

Die MsgBox habe ich eingefügt um herauszufinden was da abläuft und ich bekomme folgende Nachrichten:
Zuerst 8,7,6,5,4,4,3,2,1,3 und dann den Laufzeitfehler.
Das verstehe ich überhaupt nicht. (ich hab auch schon nachgeschaut, ob ich vielleicht das Form_Unload mehrmals aufrufe, aber das tue ich nicht)
Besonders komisch ist, dass die 4 zweimal vorkommt.

Bitte um Hilfe
Danke im Vorraus
Gruß Andreas

Ich weiß jetzt schon, dass Form_Unload 2 mal geöffnet wird.
Nach dem ersten Vierer beginnt alles nochmal von vorne.

Zur Lösung des Problems, wär für mich interessant, wie man herausfindet, welchen Index ein Form hat.

mfg Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ich verstehe den Sinn des Codes nicht. Warum nicht einfach nur …

Private Sub Form\_Unload(Cancel As Integer)
 End
End Sub

???

Gruß, Rainer

Dieser Code wird automatisch erstellt, wenn man ein Projekt mit dem VB-Anwendungsassistenten erstellt. Hab es bis jetzt noch nie anders gemacht. Danke für den Hinweis.

mfg Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]