Excel vba Userform verliert Informationen

Hallo zusammen,

ich habe ein Problem in Bezug auf UserForms in Excel (2007).
Eine Userform wird bei Dateistart mit genau so viel Kontrollkästchen wie Tabellenblätter vorhanden gefüllt. Der Benutzer kann darüber auswählen, welche Tabellenblätter angezeigt werden sollen, da die Datei sehr viele Blätter enthält. Funktioniert auch einwandfrei.
In einem Tabellenblatt existiert ein Button, der automatisch eine Kopie der Vorlage mit einem frei zu vergebenen Namen als neues Tabellenblatt anlegt. In der Kopie soll jedoch der Button nicht mehr erscheinen, und wird daher gelöscht:

Sheets(Blattname).Shapes(„cmdKopierenMitarbeiter“).Delete

Wenn diese Funktion ausgeführt wird, schließt sich jedoch automatisch die geöffnete UserForm und ich muss sie wieder komplett mit UserForm.Show laden.

Ein ähnliches Problem entsteht beim Wechsel in einen Fortschrittsbalken, der ebenfalls als UserForm realisiert ist. Hier bleibt die Übersichtsform zwar noch sichtbar aber wenn ich dann, nachdem der Fortschrittbalken geschlossen, ist mit der Maus auf die Form gehe, lädt sich die wieder komplett neu, und die bestehenden Informationen sind verloren gegangen.

Gibt es eine Möglichkeit, dass die UserForm in beiden Fällen die Informationen behält und nicht neu geladen werden muss.

Ich lade die Form mit dem Parameter UserForm.Show (o)

Die Eigenschaft ShowModal habe ich sowohl mit Parameter True als auch mit False getestet – jedoch ohne erfolg.

Vielen Dank für eure Hilfe im Voraus.

Der Ratlose

Hallo Ratloser,

In einem Tabellenblatt existiert ein Button, der automatisch
eine Kopie der Vorlage mit einem frei zu vergebenen Namen als
neues Tabellenblatt anlegt. In der Kopie soll jedoch der
Button nicht mehr erscheinen, und wird daher gelöscht:

warum nimmst du da nicht gleich eine Vorlage wo gar kein Button drauf ist?

Sheets(Blattname).Shapes(„cmdKopierenMitarbeiter“).Delete

Wenn diese Funktion ausgeführt wird, schließt sich jedoch
automatisch die geöffnete UserForm und ich muss sie wieder
komplett mit UserForm.Show laden.

Ich wüßte jetzt nicht warum sich eine UF schließen sollte, wenn ich auf ihr auf einen CommandButton klicke und daraufhin in einem Blatt ein CommandButton gelöscht wird.

Ein ähnliches Problem entsteht beim Wechsel in einen
Fortschrittsbalken, der ebenfalls als UserForm realisiert ist.

Wie „wechselt“ man in einen Fortschrittsbalken?

Hier bleibt die Übersichtsform zwar noch sichtbar aber wenn
ich dann, nachdem der Fortschrittbalken geschlossen, ist mit
der Maus auf die Form gehe, lädt sich die wieder komplett neu,
und die bestehenden Informationen sind verloren gegangen.

Zeig mal bitte den Code der UF.

Gibt es eine Möglichkeit, dass die UserForm in beiden Fällen
die Informationen behält und nicht neu geladen werden muss.
Ich lade die Form mit dem Parameter UserForm.Show (o)

Vielleicht kürzt es vieles ab, wenn du die mappe mal hochlädst mit file-upload o.ä., s. FAQ:2606

Scheinbar geht es ja nicht um die Daten in den Blättern, also kannste die löschen.
Hauptsache, das was du beschreibst tritt auf.

Gruß
Reinhard

Hallo Reinhard,

vielen Dank für deine Info.

Hallo Ratloser,

In einem Tabellenblatt existiert ein Button, der automatisch
eine Kopie der Vorlage mit einem frei zu vergebenen Namen als
neues Tabellenblatt anlegt. In der Kopie soll jedoch der
Button nicht mehr erscheinen, und wird daher gelöscht:

warum nimmst du da nicht gleich eine Vorlage wo gar kein
Button drauf ist?

Die neuen Tabellenblätter müssen eine bestimmte Namenskonvention einhalten. Über den Button wird u.a. dies gewährleistet. Die Userform läuft im Hintergrund. Das funktioniert ja auch alles, nur wenn halt der Button im neu erstellten Tabellenblatt gelöscht wird, schließt sich die Form. Kommentiere ich den Löschbefehl aus, funktioniert alles einwandfrei.

Sheets(Blattname).Shapes(„cmdKopierenMitarbeiter“).Delete

Wenn diese Funktion ausgeführt wird, schließt sich jedoch
automatisch die geöffnete UserForm und ich muss sie wieder
komplett mit UserForm.Show laden.

Ich wüßte jetzt nicht warum sich eine UF schließen sollte,
wenn ich auf ihr auf einen CommandButton klicke und daraufhin
in einem Blatt ein CommandButton gelöscht wird.

Ich klicke nicht auf einen Button in der Userform, sondern auf einen Button in der Tabellenblattvorlage, der das Tabellenblatt kopiert und anschließend den Löschvorgang des anstößt.

Ein ähnliches Problem entsteht beim Wechsel in einen
Fortschrittsbalken, der ebenfalls als UserForm realisiert ist.

Wie „wechselt“ man in einen Fortschrittsbalken?

Das passiert automatisch. In einigen Tabellenblättern gibt es einen Button der die Daten aktualisiert. Da hier sehr viele Daten gesammelt werden wird vor diesem Prozess eine UserForm die den Fortschrittsbalken enthält mit Fortschrittsbalken.Show (o) gestartet. Die Übersichtsform ist dann aber noch sichtbar.

Hier bleibt die Übersichtsform zwar noch sichtbar aber wenn
ich dann, nachdem der Fortschrittbalken geschlossen, ist mit
der Maus auf die Form gehe, lädt sich die wieder komplett neu,
und die bestehenden Informationen sind verloren gegangen.

Zeig mal bitte den Code der UF.

Die UserForm funktioniert einwandfrei, bis auf die beiden Probleme, die offensichtlich dadurch entstehen, dass ich innerhalb der Anwendung zwischen UserForm und UserForm wechsel oder der Wechsel dadurch entsteht, dass ich einen Button in einem Tabellenblatt lösche.
Dachte dafür gibt es eine Erklärung.

Gibt es eine Möglichkeit, dass die UserForm in beiden Fällen
die Informationen behält und nicht neu geladen werden muss.
Ich lade die Form mit dem Parameter UserForm.Show (o)

Vielleicht kürzt es vieles ab, wenn du die mappe mal hochlädst
mit file-upload o.ä., s. FAQ:2606

Das Teil ist ziemlich groß. Versuche mal in einer kleineren Tabelle das Problem kurz nachzustellen.

Scheinbar geht es ja nicht um die Daten in den Blättern, also
kannste die löschen.
Hauptsache, das was du beschreibst tritt auf.

Gruß
Reinhard

Viele Grüße und nochmals danke für deine Unterstützung

der Ratlose

Das Teil ist ziemlich groß. Versuche mal in einer kleineren
Tabelle das Problem kurz nachzustellen.

Hallo Ratloser,

bruchste nicht, hab ich mir schon nachgestellt. Plan hab ich noch keinen.

Gruß
Reinhard

warum nimmst du da nicht gleich eine Vorlage wo gar kein
Button drauf ist?

Die neuen Tabellenblätter müssen eine bestimmte
Namenskonvention einhalten. Über den Button
wird u.a. dies gewährleistet. Die
Userform läuft im Hintergrund. Das funktioniert ja auch alles,
nur wenn halt der Button im neu erstellten Tabellenblatt
gelöscht wird, schließt sich die Form. Kommentiere ich den
Löschbefehl aus, funktioniert alles einwandfrei.

Hallo Ratloser,

den neuen Name kannst du doch vergeben wie du willst.

Private Sub CommandButton1\_Click()
UserForm1.Show 0
End Sub

Private Sub CommandButton2\_Click()
'Application.EnableEvents = False
'CommandButton1.TakeFocusOnClick = False
'Sheets("Tabelle1").Copy After:=Sheets(Sheets.Count)
'ActiveSheet.Shapes("CommandButton1").Delete
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "NeuerName" & Worksheets.Count
'UserForm1.Repaint
'Application.EnableEvents = True
Worksheets(CommandButton1.Parent.Name).UsedRange.Copy Destination:=ActiveSheet.Range("A1")
Worksheets(CommandButton1.Parent.Name).Activate
End Sub

Gruß
Reinhard

Hi Reinhard,

das Problem beim Wechsel vom Fortschrittsbalken in die UserForm Übersicht habe ich gelöst.

Hab anstelle von Private Sub UserForm_Activate()

Private Sub UserForm_Initialize()

verwendet. Das funzt.

Bei dem Thema mit dem löschen des Buttons und der dadurch verschwindenden UserForm Übersicht bin ich noch nicht weiter.

Vielen Dank und viele Grüße

der Ratlose