Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Userform aufrufen und Event fortsetzen


Betrifft: Userform aufrufen und Event fortsetzen von: Willi
Geschrieben am: 20.01.2018 12:31:41

Hallo,

ich suche jetzt schon einige Zeit im Internet und werde nicht fündig.

Ich habe zwei Userforms. In der ersten werden Eingaben gemacht. Aufgrud dieser Eingaben wird die Exceltabelle bearbeitet. In der zweiten habe ich eine ProgressBar eingefügt, mit der ich den Fortschritt der Änderung anzeigen will.

Mein Code für einen CommonadButton in der ersten Userform sieht folgendermaßen aus:

Private Sub CB_Ausführen_Schichten_Click()

    'mein Code
    UF_Warten.Show    'nach öffnen der UF soll der Code fortgesetzt werden 
    'mein Code
    UF_Warten.PB_Status = UF_Warten.PB_Status + 1 'funktioniert das???
    'mein Code
    UF_Warten.PB_Status = UF_Warten.PB_Status + 1 'funktioniert das???
    ' an einigen weiteren Stellen, soll die ProgressBar erhöht werden
    UnloadUF_Warten

End Sub

Was muss ich machen, damit der Code nach öffnen der UF_Warten weiter fortgesetz wird?
Und würde das Erhöhen der Progressbar so funktionieren?

Oder bin ich da komplett auf dem Holzweg?

Grüße,
Willi


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Ralf Anton
Geschrieben am: 20.01.2018 13:37:48

Hi Willi,

zunächst müssten beide Formen modeless gestartet werden oder die Eigenschaft ShowModal auf false gesetzt werden. Auch ergibt das Erhöhen der Progressbar auf einen Button keinen Sinn, da ja nicht wirklich der Fortschritt eines Prozesses angezeigt wird (in Deinem Fall, wie oft der User auf den Button klickt....:) ).
Meine Meinung zur Progressbar:

1. Wenn die Abarbeitung des Codes so lange dauert, dass der User informiert werden muss, dann würde ich zunächst einmal schauen, ob der Code optimal ist.
2. verbraucht auch die Progressbar Ressourcen, was die Angelegenheit noch einmal verlangsamt.
3. könntest Du auf der Startform auch alternativ ein Label mit roter Information zum Vorgang einblenden lassen, dass Du nach Beendigung des Prozesses wieder unsichtbar machst. Dafür (wie übrigens auch für die Progressbar) wird jedoch keine 2. Form zwangsweise benötigt.

Fazit: Generell würde ich Dir vom Einsatz der Progressbar eher abraten.


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Willi
Geschrieben am: 20.01.2018 13:51:04

Hallo Anton,

die Änderung im Tabellenblatt läuft über Schleifen. Der User klickt also nur einmal auf den Button und alle Daten werden geändert.

Mit vbModeless funktioniert es fast perfekt. Auch das erhöhen der ProgressBar funktioniert. Auf der UserForm UF_Warten gibt es die PrograssBar und ein Label mit dem Hinweis: Bitte warten. Die ProgressBar wird angezeigt jedoch das Label nicht. Die Eigenschaft Visible ist auf True. Warum wird das nicht angezeigt?

Grüße,
Willi


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Nepumuk
Geschrieben am: 20.01.2018 14:14:16

Hallo Willi,

du benötigst nach einer Änderung des Labels ein Repaint des UserForms.

Beispiel:

With UserForm2
    .Label1.Caption = "100%"
    .Repaint
End With

Gruß
Nepumuk


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Willi
Geschrieben am: 20.01.2018 14:28:17

Hallo Nepumuk,

eigentlich ändere ich das Label nicht.

Ich bekomme eine Fehlermeldung: Methode oder Datenobjekt nicht gefunden. Im Code wird .Repaint blau markiert. (Userform und Labelname habe ich angepasst)

Gruß,
Willi


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Nepumuk
Geschrieben am: 20.01.2018 14:34:28

Hallo Willi,

dann habe ich dich falsch verstanden. Du musst in dem Fall das Repaint im Activate-Event des UserForms unterbringen:

Private Sub UserForm_Activate()
    Repaint
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Willi
Geschrieben am: 20.01.2018 14:40:26

Hallo Nepumuk

Es funktioniert immer noch nicht, das Label ist nicht zu sehen.

Gruß,
Willi


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Nepumuk
Geschrieben am: 20.01.2018 14:51:24

Hallo Willi,

kann ich nicht nachvollziehen. Hast du den Code auch in deinen UF_Warten kopiert?

Ansonsten musst du mal die Mappe hochladen.

Gruß
Nepumuk


  

Betrifft: AW: Userform aufrufen und Event fortsetzen von: Willi
Geschrieben am: 22.01.2018 21:39:16

Hallo!

So, ich habe jetzt den Fehler gefunden. Die ProgressBar wird ja von dem Code der ersten UserForm (bei mir UF_Menü) erhöht. Also musste ich nach jedem mal Erhöhen der ProgressBar, die sich ja in der zweiten UserForm (bei mir die UF_Warten) befindet, den Befehl UF_Warten.Repaint ausführen und alles klappt, wie gewollt. Das Label ist zu sehen.

Vielen Dank für die Hilfe.

Grüße,
Willi


Beiträge aus dem Excel-Forum zum Thema "Userform aufrufen und Event fortsetzen"