Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1768to1772
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

Öffnen von UF aus anderer UF zu lange

Öffnen von UF aus anderer UF zu lange
03.07.2020 08:04:44
UF
Guten Morgen,
ich habe folgendes Problem:
Aus einer UF_Buchungen2 öffne ich mit dem Button11

Private Sub CommandButton11_Click()
UF_Buchungen2.Hide
UF_Buchungen_Konto_neu.Show
End Sub

die Userform UF_Buchungen_Konto_neu.
Dieser Vorgang dauert sehr lange. Während dieser Zeit ist die Tabelle sichtbar.
Ich hätte gerne, dass beim Öffnen der UF zuerst die Meldung "bitte warten! erscheint anstatt der Tabelle und dann die UF_Buchungen_Konto_neu mit den erforderlichen Daten gefüllt wird.
Die Userform_Initialize lautet wie folgt:

Private Sub UserForm_Initialize()
Dim aRow, i As Long                             'erforderlich für Combobox1
Dim wb As Workbook                              'benötigt für aktuelle Workbook
Dim wsKI As Worksheet                           'benötigt für Kontoinhaber Listbox3
Dim wsKA As Worksheet                           'benötigt für Kontoarten Listbox4
Dim zKA As String                               'benötigt für Kontoarten Listbox4
Dim WS2 As Worksheet                            'benötigt für Kontoart
Dim ws3 As Worksheet                            'benötigt für Kontoart
Dim zKI As String                               'benötigt für Kontoinhaber Listbox3
Dim z1 As String                                'benötigt für Combobox3 Buchungsjahr
Dim z2 As String                                'benötigt für Combobox2 Kontoart
Dim Z3 As String                                'benötigt für Combobox2 Kontoart
Dim LC                                          'benötigt für Füllen Listbox1
Dim Li                                          'benötigt für Füllen Listbox1
'Anfang Bildschirmgroesse
Application.WindowState = xlMaximized
With Me
.Height = Application.Height
.Width = Application.Width
End With
'Ende Bildschirmgroesse
Set wb = ThisWorkbook                           'benötigt für Combobox2 Kontoart und  _
Combobox1 Kontodaten
'Anfang Listbox3 Kontoinhaber
Set wsKI = wb.Worksheets("Kontoinhaber")
With wsKI
zKI = wsKI.Cells(Rows.Count, 1).End(xlUp).Row     'benötigt für Listbox3 Kontoinhaber
If .Range("A2") = "" Then
ListBox3.RowSource = .Range("A2").Value
Else
Dim strLen As String
With wsKI
With ListBox3
.Clear
.ColumnCount = 6                                 '6Spalten erforderlich für  _
Zeilen
.ColumnWidths = "6cm;5cm;1,2cm;4cm;3cm;2,0cm"
For i = 2 To wsKI.Cells(Rows.Count, "A").End(xlUp).Row
Li = i - 1
.AddItem
LC = .ListCount - 1
.List(LC, 0) = wsKI.Cells(i, 1) 'Inhabername in Spalte A=1
.List(LC, 1) = wsKI.Cells(i, 2) 'Inhaberstrasse in SpalteB=2
.List(LC, 2) = wsKI.Cells(i, 3) 'Inhaberpostleitzahl in SpalteC=3
.List(LC, 3) = wsKI.Cells(i, 4) 'Inhaberort in SpalteD=4
.List(LC, 4) = ("0" & (wsKI.Cells(i, 5)))  'SpalteE in  Spalte5 - dadurch  _
wird in Tabelle Zelle "0" vorne eingefügt
.List(LC, 5) = Format(wsKI.Cells(i, 6), "dd.mm.yyyy") 'Inhaberdatum in  _
SpalteF=6
Next i
End With
End With
End If
End With
'Ende Listbox3 Kontoinhaber
'Anfang Prüfung Kontoinhaber
If wsKI.Range("A2") = "" Then
Me.Label39.Visible = True
Me.Label40.Visible = False
'Me.CommandButton15.Visible = True
Me.CommandButton15.Enabled = False
Else
Me.Label39.Visible = False
Me.Label40.Visible = True
'Me.CommandButton15.Visible = False
Me.CommandButton15.Enabled = False
End If
'Ende Prüfung Kontoinhaber
'Anfang Kontoarten auflisten
Set wsKA = wb.Worksheets("Hilfstabelle")
With wsKA
zKI = wsKI.Cells(Rows.Count, 1).End(xlUp).Row     'benötigt für Listbox3 Kontoinhaber
If .Range("A2") = "" Then
ListBox4.RowSource = .Range("A2").Value
Else
With wsKA
With ListBox4
.Clear
.ColumnCount = 1                                '6Spalten erforderlich für Zeilen
.ColumnWidths = "3cm"
For i = 2 To wsKA.Cells(Rows.Count, "A").End(xlUp).Row
Li = i - 1
.AddItem
LC = .ListCount - 1
.List(LC, 0) = wsKA.Cells(i, 1) 'Inhabername in Spalte A=1
Next i
End With
End With
End If
End With
'Ende Kontoarten auflisten
'Anfang Kontrolle Kontoarten
With wsKA
If .Range("Q2") = "0" Then '=Anzahl der vorhandenen Kontoarten
Me.Label18.BackColor = &HFF&
Me.Label18.Caption = "Es sind noch keine Kontoarten vorhanden - bitte Kontoart  _
anlegen"
ElseIf .Range("Q2") = "1" Then
Me.Label18.BackColor = &HC0FFFF
Me.Label18.Caption = "Es ist eine Kontoart vorhanden - es können noch zwei  _
Kontoarten angelegt werden"
ElseIf .Range("Q2") = "2" Then
Me.Label18.BackColor = &HC0FFFF
Me.Label18.Caption = "Es sind zwei Kontoarten vorhanden - es kann noch eine  _
Kontoart angelegt werden"
ElseIf .Range("Q2") = "3" Then
Me.Label18.BackColor = &HC0FFFF
Me.Label18.Caption = "Es sind drei Kontoarten vorhanden - es kann keine Kontoart  _
angelegt werden. Änderung einer Kontoart ""ausser Girokonto"" ist möglich"
End If
End With
'Ende Kontrolle Kontoarten
'Anfang Listbox2
Call Arbeitsblaetter_mit_Bu_beginnend_auflisten
Set ws3 = wb.Sheets("Kontodaten")             'benötigt für Combobox2 Kontoart
Z3 = ws3.Cells(Rows.Count, 15).End(xlUp).Row     'benötigt für Combobox1 Kontoart
ws3.Select
If ws3.Range("O2") = "" Then
ListBox2.RowSource = ws3.Range("O2").Value
Else
With ws3
With ListBox2
.Clear
.ColumnCount = 1                                 '6Spalten erforderlich für  _
Zeilen
.ColumnWidths = "3,5cm"
For i = 2 To Cells(Rows.Count, "O").End(xlUp).Row
Li = i - 1
.AddItem
LC = .ListCount - 1
.List(LC, 0) = Cells(i, 15) 'Inhabername in Spalte N=15
Next i
End With
End With
End If
'Ende Listbox2
''Anfang ComboBox2 Kontoart
Set WS2 = wb.Sheets("Hilfstabelle")             'benötigt für Combobox2 Kontoart
WS2.Activate
With ComboBox2
.Clear
.ColumnCount = 1                               '8Spalten erforderlich für Zeilen
.ColumnWidths = "3,5cm" 'durch letzte beide 0cm werden die beiden letzten Spalten  _
ausgeblendet
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
.AddItem
LC = .ListCount - 1
.List(LC, 0) = Cells(i, 1) 'SpalteA in  Spalte1
Next i
End With
''Ende Combobox2 Kontoart
'Anfang Combobox3   Auswahl Kalender oder Schuljahr
Set WS2 = wb.Sheets("Hilfstabelle")             'benötigt für Combobox2 Kontonamen
z1 = WS2.Cells(Rows.Count, 4).End(xlUp).Row     'benötigt für Combobox2 Kontonamen
'''If ws2.Range("A2") = "" Then
'''ComboBox3.RowSource = ws3.Range("D1").Value
'''Else
With ComboBox3
.List = WS2.Range("D2:H" & z1).Value
.ColumnCount = 5
.ColumnHeads = False
.ColumnWidths = "3,5 cm;3,5cm;3,5cm;2,5cm;2,5cm"
End With
'''End If
'Ende Combobox3   Auswahl Kalender oder Schuljahr
'Anfang Listbox1
Set ws3 = wb.Sheets("Kontodaten")             'benötigt für Combobox2 Kontoart
Z3 = ws3.Cells(Rows.Count, 1).End(xlUp).Row     'benötigt für Combobox1 Kontoart
If ws3.Range("A2") = "" Then
ListBox1.RowSource = ws3.Range("A2").Value
Else
With ListBox1
.List = ws3.Range("A1:L" & Z3).Value
.ColumnCount = 12
.ColumnHeads = False
.ColumnWidths = "3,5cm;3,5cm;3,5cm;4,6cm;2,5cm;2,5cm;2,5cm;2,0cm;2,0cm;2,5cm;0;1,6cm"
End With
End If
''ListBox1.ListIndex = z3 - 1     'wählt den letzten Datensatz für evtl. Änderung
'Ende Listbox1
Me.CommandButton1.Enabled = False
Me.CommandButton5.Enabled = False
Me.CommandButton6.Enabled = False
Me.CommandButton2.Enabled = False
'    Me.CommandButton14.Enabled = False
Me.CommandButton13.Enabled = False
Me.CommandButton7.Enabled = False
'Anfang Kontoname automatisch in TB1 einfügen, aufgrund Namenvergabe aus Dateiname sh.  _
Worksheet Worddaten range B38
Me.TextBox1.Value = Worksheets("Worddaten").Range("B38")
'Ende Kontoname automatisch in TB1 einfügen, aufgrund Namenvergabe aus Dateiname sh. Worksheet  _
Worddaten range B38
'Anfang Prüfung ob bereits Kontoname existiert und Eintrag in Textbox1 falls zutreffend
If Worksheets("Kontodaten").Range("A2").Value > "" Then
TextBox1.Value = Worksheets("Kontodaten").Range("A2").Value
Me.TextBox1.BackColor = &HC0FFFF
TextBox1.Enabled = False
Me.ComboBox2.BackColor = &HC0FFC0
Me.TextBox3.BackColor = &HC0FFC0
Me.TextBox4.BackColor = &HC0FFFF
Me.TextBox5.BackColor = &HC0FFFF
Me.TextBox6.BackColor = &HC0FFC0
Me.TextBox7.BackColor = &HC0FFC0
Me.TextBox12.BackColor = &HC0FFC0
Else
TextBox1.Enabled = True
Me.TextBox1.BackColor = &HC0FFC0
Me.ComboBox2.BackColor = &HC0FFC0
Me.TextBox3.BackColor = &HC0FFC0
Me.TextBox4.BackColor = &HC0FFFF
Me.TextBox5.BackColor = &HC0FFFF
Me.TextBox6.BackColor = &HC0FFC0
Me.TextBox7.BackColor = &HC0FFC0
Me.TextBox12.BackColor = &HC0FFC0
End If
'Ende Prüfung ob bereits Kontoname existiert und Eintrag in Textbox1 falls zutreffend
'Anfang für Prüfung der Kategorien - Anzahl der vorhandenen Kategorien max. 3
TextBox13.Value = Worksheets("Kategorien").Range("A2")
'Ende für Prüfung der Kategorien - Anzahl der vorhandenen Kategorien max. 3
Me.Label19.Visible = False
Me.Label23.Visible = False
Me.CommandButton11.Enabled = False
Me.Label34.Visible = False
Me.TextBox11.Visible = False
ComboBox3.Enabled = True
Label68.Visible = False
ComboBox3.Enabled = False
End Sub
Könnt ihr mir hierbei bitte helfen. Ist es möglich das Starten schneller zu machen?
Gruss
Peter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sicher, ich bau das gleich nach......
03.07.2020 08:46:17
Helmut
AW: Öffnen von UF aus anderer UF zu lange
03.07.2020 09:38:01
UF
Hallo Peter,
ein Versuch wär's wert (ungetestet):
Bau dir eine UserForm, auf der nur "Bitte warten!" steht. Diese rufst du vor dem "UF_Buchungen_Konto_neu.Show" auf und schließt sie nach dem "UF_Buchungen_Konto_neu.Show" wieder. Dann sollte sie genau so lange offen sein, bis "UF_Buchungen_Konto_neu.Show" geladen ist.
Private Sub CommandButton11_Click()
UF_Buchungen2.Hide
UF_Warten.show (oder load)
UF_Buchungen_Konto_neu.Show
UF_Warten.hide (oder unloade)
End Sub

Sigi
AW: Öffnen von UF aus anderer UF zu lange
04.07.2020 06:48:17
UF
Hallo Sigi,
funktioniert leider nicht.
Gruss
Peter
Anzeige
AW: Lösung in Forum gefunden
04.07.2020 07:23:28
Peter
Hallo Sigi,
Dein Hinweis war grundsätzlich richtigt. Es müssen jedoch alle UF mit Showmodal=False gesetzt werden. Und bei der UF fürs Warten mit UF.Repaint eingesetzt werden, das ansonsten die UF weiss bleibt.
Nachstehendes ist die Lösung:

'Test UF_Buchungen2_bittewarten - alle UF mit Showmodal=False
Private Sub CommandButton23_Click()
Unload UF_Buchungen2
UF_Buchungen2_bittewarten.Show
UF_Buchungen2_bittewarten.Repaint
UF_Buchungen_Konto_neu.Show
Unload UF_Buchungen2_bittewarten
End Sub
Wünsche noch einen schönen Tag.
Gruss
Peter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige