Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1320to1324
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

userForm

userForm
02.07.2013 08:40:14
Gregor
Hallo
Mit einem VBA-Code erstelle ich eine Tabelle. Nach dem Erstellen der Tabelle rufe ich im Code eine UF mit den Befehlen "cmdStarten_Click" und "cmdAbbrechen_Click" auf. Nachdem die UF aufgerufen ist, will ich das Blatt filtern und nachher den Code mit "cmdStarten_Click" weiterabarbeiten (auf Basis gefilterte Tabelle). Ich versuchte es mit ShowModal auf False, aber dann ist die UF inaktiv und ich kann mit dem Code nicht weiterfahren.
Wie kann ich das lösen?
Danke und Gruss
Gregor

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bahnhof
02.07.2013 09:06:31
Klaus
Hi Gregor,
Ich versuchte es mit ShowModal auf False, aber dann ist die UF inaktiv und ich kann mit dem Code nicht weiterfahren.
Wohin fährt denn der Code? In den nächsten Bahnhof?
Nein ehrlich: Genau dafür ist ShowModal aber da. Wenn es bei dir nicht funktioniert, machst du es falsch. Die saloppe Umschreibung "Code fährt nicht weiter" reicht aber nicht für eine Fehleranalyse.
Musterdatei?
Grüße,
Klaus M.vdT.

AW: Bahnhof
02.07.2013 09:35:41
Gregor
Hoi Klaus
Die UF "UserForm1.show" wird während dem Abarbeiten des Codes aufgerufen. Wenn ich ShowModal = True habe, dann wird der Code unterbrochen, dann kann ich aber keine Aktivität (Filtern) vornehmen. Wenn ich ShowModal = False habe, dann läuft der Code ohne Unterbruch weiter. Nach dem Aufrufen der UF muss ich das Blatt Filtern und dann mit dem Code mit Click auf Start/Weiter (oder eben Abbrechen) weiterfahren.
Danke und Gruss
Gregor

Anzeige
nicht nachvollziehbar
02.07.2013 09:43:31
Klaus
Hallo Gregor,
ich habe keine Lust, dein Problem nachzukonstruieren. Du hast bereits eine Datei, in der der fragliche Code steht - lass mir die doch mal über einen Dateiupload zukommen, dann kann ich vielleicht/hoffentlich auch helfen.
Grüße,
Klaus M.vdT.

AW: Bahnhof
02.07.2013 10:28:44
fcs
Hallo Gregor,
wenn ein Teil deines Codes erst weiter ausgeführt werden soll, wenn im Userform die entsprechende(n) Schaltflächen gedrückt werden oder das Userform geschlossen wird. Dann muss du deine Prozedur in zwei Prozeduren aufteilen. Wobei der 2. Teil dann von entsprechenden Aktionen im Userform gestartet wird.
Gruß
Franz

Anzeige
AW: Bahnhof
02.07.2013 12:12:20
Gregor
Hallo
Ich habe eine Musterdatei gebastelt.
https://www.herber.de/bbs/user/86165.xlsm
In der Prozedur halte ich die Stelle mit Code Stop an. Anstelle vom Code Stop möchte ich eine UF einblenden mit der Aufforderung, Spalte A nach Wunsch zu filtern und nach der Filterauswahl für die definierten Zellen je ein Blatt zu erstellen. Das heisst nach dem Filtern mit dem Button "Weiter" die Prozedur fortsetzen.
Ich hoffe, mein Anliegen ist jetzt klar.
Vielen Dank und Gruss
Gregor

AW: Bahnhof
02.07.2013 13:32:02
fcs
Hallo Gregor,
leider hab ich ein Problem beim Öffnen deiner hochgeladenen Datei. Es kommt eine Fehermeldung und nach der "Reparatur" durch Excel ist die Datei bis auf 2 Tabellenblätter leer.
Wie bereits geschrieben muss du den Teil deines Codes, der jetzt nach deinem Stop kommt in eien 2. Prozedur verschieben/kopieren, evtl. auch inklusive von Variablendeklarationen. Diese Prozedur muss du dann mit der Weiter-Schaltfläche deines UF starten. Alternativ kannst du den entsprechenden Codeteil auch in die Klick-Ereignis-Prozedur der "Weiter"-Schaltfläche packen.
Gruß
Franz
Beispiel für Code:
'Code in einem allgemeinen Modul
Sub prcUserform_anzeigen()
'Code irgend etwas was du jetzt schon hast vor Anzeige des UF
UserForm1.Show False
End Sub
Sub prcErstellenBlaetter()
Dim wks As Worksheet, wksNeu As Worksheet
Dim Zeile As Long, strName As String
Set wks = ActiveSheet
With wks
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Rows(Zeile).Hidden = False Then
strName = .Cells(Zeile, 1).Text
ActiveWorkbook.Worksheets.Add after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
Set wksNeu = ActiveSheet
wksNeu.Name = strName
End If
Next
End With
End Sub
'Code für Schaltflächen im Userformim Userform
Private Sub cmbAbbrechen_Click()
Unload Me
End Sub
Private Sub cmbWeiter_Click()
Call prcErstellenBlaetter
Unload Me
End Sub

Anzeige
AW: Bahnhof
02.07.2013 15:28:38
Gregor
Hoi Franz
Vielen Dank. Ich habe nun nach deinem Vorschlag aus einer zwei Prozeduren gemacht und starte am Ende der 1. Prozedur die UserForm ein. Somit erreiche ich die gewünschte Funktion.
Besten Dank für die Hilfe und Gruss
Gregor

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige