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

UF öffnet/schließt zu langsam

UF öffnet/schließt zu langsam
21.07.2022 12:07:47
Fred
Hallo Excel-Profis,
ich öffne ein UF,- bis zur kompletten Darstellung dauert es über 5 Sekunden auf meinem Laptop.
Das halte ich für zu lange.
Zu Beginn von "UserForm_Initialize" schalte ich die Neuberechnung aus und am Ende wieder ein.
Hilft allerdings nicht.
Das das Laden des UF "so lange dauert" liegt eindeutig an den Formeln von Sheet "Dashboard Daten", denn wenn ich dieses Sheet lösche läßt sich auch das UF ratzfatz öffnen.
Meine Frage:
Muß ich die Neuberechnung_aus "spezifizieren" oder an anderer Stelle des Code "UserForm_Initialize" setzen?
Oder ist der Ansatz ein ganz anderer?
Kann ein Experte bitte mal auf die Beispielmappe schauen?!
https://www.herber.de/bbs/user/154287.xlsb
Gruss
Fred

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

Betreff
Datum
Anwender
Anzeige
AW: UF öffnet/schließt zu langsam
21.07.2022 12:47:13
Daniel
Hi
zeitfresser ist dein Makro ALLEFilterAUS
hier solltest du schauen, ob du da wirklich jeden Filter einzeln setzen musst.
es hilft auf jeden fall, wenn du für dieses Makro die automatische Neuberechnung ausschaltetest, das hast du bisher noch nicht gemacht.
das Filtern sorgt für eine neuberechung der Formeln.
Gruß Daniel
AW: UF öffnet/schließt zu langsam
21.07.2022 13:02:12
Fred
Hallo Daniel,
der Zeitfresser ist Dank deines Tipps "verhungert".
Warum das nun darin liegt? - wenn Sheet "Dashboard Daten" gelöscht oder die Formeln in Werte umgesetzt werden, öffnet das UF ebenfalss flott. Zudem gibt es in diesem Sheet nichts, was ein "Filter löschen" rechtfertigen könnte ....
Vielen Dank für die Lösung!!!
Gruss
Fred
Anzeige
AW: UF öffnet/schließt zu langsam
21.07.2022 13:05:28
Nepumuk
Hallo Fred,
im Modul deines UserForms:

Option Explicit
Option Compare Text
#If Win64 Then
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32.dll" Alias "GetWindowLongPtrA" ( _
ByVal hwnd As LongPtr, _
ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32.dll" Alias "SetWindowLongPtrA" ( _
ByVal hwnd As LongPtr, _
ByVal nIndex As Long, _
ByVal dwNewLong As LongPtr) As LongPtr
#Else
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32.dll" Alias "GetWindowLongA" ( _
ByVal hwnd As LongPtr, _
ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32.dll" Alias "SetWindowLongA" ( _
ByVal hwnd As LongPtr, _
ByVal nIndex As Long, _
ByVal dwNewLong As LongPtr) As LongPtr
#End If
Private Declare PtrSafe Function FindWindowA Lib "user32.dll" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function DrawMenuBar Lib "user32.dll" ( _
ByVal hwnd As LongPtr) As Long
Private Declare PtrSafe Function SendMessageA Lib "user32.dll" ( _
ByVal hwnd As LongPtr, _
ByVal wMsg As Long, _
ByVal wParam As LongPtr, _
ByRef lParam As Any) As LongPtr
Private Declare PtrSafe Function ReleaseCapture Lib "user32.dll" () As Long
Private wHandle As LongPtr
'Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
Private Sub UserForm_Initialize()
Dim breite      As Single
Dim breite2     As Single
Dim höhe        As Single
Dim höhe2       As Single
Dim ftop        As Single
Dim fleft       As Single
Dim zoomfa      As Single
wHandle = FindWindowA("ThunderDFrame", Caption)
If wHandle  0 Then
DrawMenuBar wHandle
End If
' breite und höhe
'Userform
breite = Width
höhe = Height
'Excel-Fenster
breite2 = Application.Width
höhe2 = Application.Height
ftop = Application.Top
fleft = Application.Left
StartUpPosition = 0
Left = fleft
Top = ftop
Width = breite2 - 2
Height = 155
If breite2  Initialisierung der Combobox
Call UF1_Standard(Me, True)
End Sub
Im Modul "testen"

Public Sub ALLEFilterAUS()
Dim xLo As ListObject
Dim xWs As Worksheet
Application.ScreenUpdating = False
For Each xWs In ThisWorkbook.Worksheets
For Each xLo In xWs.ListObjects
With xLo.AutoFilter
If .FilterMode Then Call .ShowAllData
End With
Next
Next
Application.ScreenUpdating = True
End Sub
Gruß
Nepumuk
Anzeige
AW: UF öffnet/schließt zu langsam
21.07.2022 13:21:52
Fred
Hallo Nepumuk,
Daniel ist auf "meine Version mit der Neuberechnung ausschalten" eingegangen.
Deine Version - mit der Überarbeitung des Moduls in UserForm und AlleFilterAus - öffnet nun auf meinen Laptop das UF ratzfatz,- also übernehme ich deine Arbeit.
Vielen Dank Nepumuk
Gruss
Fred

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige