Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
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 soll erst starten wenn Makro beendit ist

Userform soll erst starten wenn Makro beendit ist
19.11.2018 15:42:42
Bernd
Hallo zusammen,
Bräuchte mal Hilfe.
Mein Problem: Starte nachfolgendes Makro in dem ein TabBlatt aktualisiert wird. Ich schaffe es nicht, eine UF oder MsgBox anzeigen zu lassen und der Code läuft im Hintergrund weiter. Bei meinen Versuchen, bleibt der Code stehen und erst wenn die UF oder MsgBox geschlossen wird, aktualisiert sich das restliche TabBlatt. Wie kann ich das ändern?
Sub Aktualisieren()
Worksheets("Daten").Application.CalculateFull
frm_Aktuell.Show
End Sub
Für Hilfestellungen bedanke ich mich im Voraus!!!
Userbild
Office Version 2016 Pro 32bit - Windows10 Pro 64 bit
"Wenn du jemanden ohne Lächeln triffst, schenke ihm dein's!"

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 15:57:46
Rudi
Hallo,
versuch mal:
Sub Aktualisieren()
Worksheets("Daten").Application.CalculateFull
Application.OnTime Now, "showuf", , True
End Sub
Sub ShowUF()
frm_Aktuell.Show
End Sub

Gruß
Rudi
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 16:38:22
Bernd
Hallo Rudi,
Danke für deine Hilfe. Leider bleibt die Aktualisierung der Tabelle hängen (Code bleibt stehen)
Gruß
Bernd
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 16:00:04
Daniel
Hi
in Excel ist es so, dass ein Befehl immer erst dann abgearbeitet wird, wenn der vorherige abgeschlossen ist.
dh wenn du in er Userform eine hinweismeldung absetzen willst, dass gerade eine längere Neuberechnung der Datei läuft, musst du erst die Userform starten und dann die Datei neu berechnen.
allerdings gilt auch für die normale Userform die Regel, dass der nächste Befehl erst dann ausgeführt wird, wenn die aufgerufene Userform beendet und geschlossen wurde.
Eine Ausnahme gilt jedoch für Useformen, die permanent geöffnet bleiben, während man in Excel weiterarbeiten kann.
Ein solche Userform erzeugt man dadurch, dass man die Eigenschaft ShowModal = False setzt, oder beim Starten der userform dies als Parameter mit angibt:
Sub Aktualisieren()
frm_Aktuell.Show false
Worksheets("Daten").Application.CalculateFull
End Sub

Gruß Daniel
Anzeige
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 16:41:58
Bernd
Hallo Daniel,
Hab UF auf Modal "False" gesetzt und die Tabelle wird aktualisiert. Allerdings aktualisiert sich die Listbox innerhalb der UF nicht. Wie kann ich das ändern?
Gruß
Bernd
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 16:48:50
Daniel
da ich keine Ahnung habe, was du machst, wie deine Tabellen und deine Userform aussehen und vorallem wie die Listbox mit Werten befüllt wird, kann ich dir da nicht weiterhelfen.
Gruß Daniel
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 17:06:51
Bernd
Hallo Daniel,
Sorry, ohne Info einen Rat zu geben ist nicht möglich. Dumm von mir!
Hier der Code zum Befüllen der ListBox über UserForm_Initialize:
With Worksheets("Daten")
Dim zeile
zeile = Cells(Rows.Count, 1).End(xlUp).Row
If Sheets("Depot").Range("A2").Value = "" Then GoTo weiter
TextBox26 = Format(Application.Sum(.Columns(12)), "#,##0.00 €")
TextBox27 = Format(TextBox26.Value - Worksheets("Order").Cells(2, 10).Value, "#,##0.00 €") _
'(Application.Sum(.Columns(13)), "#,##0.00 €")
TextBox28 = Format(TextBox27.Value / Worksheets("Order").Cells(2, 10).Value, "0.00 %")
TextBox29 = Format(Worksheets("Order").Cells(2, 13).Value - Worksheets("Order").Cells(2,  _
10).Value, "#,##0.00 €")
weiter:
With ListBox1
.ColumnCount = 14
.ColumnWidths = "6cm;1,6cm;1cm;2,4cm;1,9cm;2cm;2,9cm;1,8cm;1,8cm;1,8cm;1,4cm;1,9cm;1, _
9cm;1,8cm"
.ColumnHeads = False
.Font.Size = 10
.RowSource = "Daten!A2:N2" & zeile
.ListIndex = 0
End With
End With
Was mir Probleme macht ist wie schon gesagt die Aktualisierung der ListBox.
Gruß
Bernd
Anzeige
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 17:18:34
Daniel
Hi
naja, nach deiner ursprünglichen Fragestellung bin ich davon ausgeangen, dass du Userform brauchst, um den Anwender zu informieren, da jetzt eine längere Neuberechnung aller Formeln in der Datei ansteht.
wenn das eine Listbox ist, mit der der Anwender arbeiten muss, ist es natürlich besser, erst die Formeln zu aktualisieren und dann die Listbox mit den aktuellsten Zahlen öffnest.
worin bestehen denn die Probleme beim aktualisieren der Listbox?
eine per Rowsource verknüpfte Liste sollte immer aktuell sein.
was auffällt ist, dass du die Listbox mit den Daten aus dem Tabellenblatt DATEN befüllen willst, aber die letzte Zeilennummer (Zeile) gar nicht auf diesem Blatt ermittelst, sondern auf dem, welches gerade zufällig aktiv ist (Zeile = cells(...))
Auch würde ich alle Einstellungen, die du per Code für die Listbox machst, gar nicht per Code durchführen, sondern direkt in die Eigenschaftsliste eintragen, auch die RowSource.
damit diese sich dynamsich an die aktuelle Tabelle anpasst, würde ich den Zellbereich als dynamischen Namen defineren und dann diesen Namen bei Rowsource angeben.
den Namen machst du mit dieser Formel bei "bezieht sich auf" dynamisch:
=Index(Daten!$A:$A;2):Index(Daten!$N:$N;Anzahl2(Daten!$A:$A))

geht aber nur, wenn in 'Spalte A alle Zellen bis zur letzten Zeile gefüllt sind.
gruß Daniel
Anzeige
AW: Userform soll erst starten wenn Makro beendit ist
19.11.2018 17:34:43
Bernd
Hallo Daniel,
ich glaube fast alles deiner tollen Erklärung verstanden zu haben. Ich werde den Umbau der Userform bzw. ListBox vornehmen.
Sollte ich weiter Probleme haben, melde ich mich.
Gruß
Bernd

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige