Das Problem ist Folgendes:
Wenn Du das Programm startest, ist Tab(1) aktiv, und damit Frame1(0) visible. Die Frame1(1) und (2), die sich auf den anderen Tab's befinden, sind unsichtbar. Unsichtbare Controls sind jedoch keineswegs wirklich unsichtbar, sie erhalten nur eine negative "Left"-Eigenschaft, so dass sie irgendwo weit links von Deinem Bildschirm sind!
Und das SSTab schaltet keineswegs irgendetwas wirklich um, es ändert eigentlich nur die Bildschirmdarstellung. Controls auf nicht aktiven Tabs werden einfach unsichtbar gemacht!
Du kannst das reproduzieren, wenn Du z.B. im Form_Load einfach mal folgenden Code einbaust:
Code:
Dim k As Integer
For k = 0 To 2
Debug.Print "Frame " + Str(k), Frame1(k).Left, Frame1(k).Top
Next
Dies ergibt dann etwa folgendes Resultat:
Frame 0 170 979
Frame 1 -170043 979
Frame 2 -170043 979
Frame(0) hat eigentlich die gleiche Position wie die anderen Frames, nur Frame(0) ist sichtbar, die anderen nicht!
Aus diesem Grund schlägt Deine Klasse fehl, da sie sich irgendwie die Positionen der Controls merkt, und umrechnet. Und wenn nun beim Resize die negativen Positionen neu berechnet werden, bleiben sie immer noch negativ, und teilweise in Bereichen, wo sie überhaupt nicht mehr hin gehören.
Du musst also die Logik Deiner Klasse komplett neu durchdenken. Lass Dir die Frame-Positionen mal nach dem Resize anzeigen...
Viele Grüsse
ronaldh