Userform erg traag bij grote aantallen

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
901
Beste Forumleden,

Graag zou ik een oplossing voor het volgende probleem tegemoet willen zien.

Ik heb een voorraadprogramma waar ik, middels een userform, de voorraad kan afboeken. Op zich werkt het systeem alleen wordt deze erg traag naar mate er meer voorraden in het systeem worden opgenomen.

In eerste instantie duurt het lang voordat de userform wordt opgestart, vervolgens is het systeem traag om een artikel te vinden en tot slot is deze traag om de voorraad in het systeem aan te passen/muteren.

Het systeem werkt als volgt:
- Via de button "Inboeken van de voorraad" wordt de userform geopend;
- Bij "Zoek artikel/dienst" kan een deel of de volledige naam van het artikel worden ingevoerd;
- Bij "Aantal verkocht" vermeld je het aantal verkochte artikelen (bijv. 1);
- Tot slot druk je op de button "Voorraad boeken / wijziging doorvoeren".

Ik hoop dat iemand mij kan helpen de code aan te passen zodat voorgaande sneller verloopt.

Alvast enorm bedankt.

Robert
 

Bijlagen

  • Voorraadmutatie.xlsm
    395,2 KB · Weergaven: 46
Ik denk dat 'ie zo een stuk sneller zal gaan bij het laden van de userform:
Code:
    Set rng = Worksheets("Tarieven").Range("A1").CurrentRegion
[COLOR="#008000"]    'For Each rw In rng.Rows
    'With LB_01    '    LB_01.AddItem
    '    For i = 1 To 18 'was 13
    '        LB_01.List(LB_01.ListCount - 1, i - 1) = rw.Cells(1, i).Value
    '    Next i
    'Next rw[/COLOR]
    LB_01.List = Application.Transpose(rng)
 
Laatst bewerkt:
Mijn voorkeur

Code:
LB_01.List = Sheets("Tarieven").ListObjects(1).DataBodyRange.Value

De rest van de instellingen doe je gewoon in het ontwerp van het formulier.
 
Beiden heel erg bedankt, het systeem start nu heel snel op en de toevoeging van VenA gaf een nog beter resultaat.

Zien jullie ook een mogelijkheid zodat het systeem sneller kan zoeken. Op dit moment zoekt deze in alle kolommen en dat vergt veel tijd. In feite zou het voldoende zijn dat het systeem alleen in de eerste twee kolommen zoekt, dat geeft een sneller resultaat, echter dan werkt de mutatiefunctie (voorraad boeken / wijziging doorvoeren) weer niet.
 
Waar je het allemaal gevonden hebt weet ik niet maar veel deugt er niet van. Zo gaat het vast een stuk beter en sneller.
 

Bijlagen

  • Voorraadmutatie.xlsm
    390,6 KB · Weergaven: 46
Bedankt voor de oplossing.

Waarschijnlijk is er een fout ingeslopen waardoor deze nog niet goed loopt.

Waar gaat het hieronder fout?

Code:
Dim ar
Private Sub Aanpassen_Click()

Code:
Private Sub Optelvak_Change()
On Error Resume Next
T_11.Value = Range("Totaleverzamelopbrengsten") - Range("Verzamelopbrengsten") - (Optelvak.Value * T_05.Value)
T_11.Value = Format(T_11.Value, "€ #,##0.00")
'T_12.Value = CDbl(LB_01.Column(27) + 1)
End Sub
[COLOR="#FF0000"]Dim ar[/COLOR]

Private Sub UserForm_Initialize()
ar = Sheets("Tarieven").ListObjects(1).DataBodyRange
LB_01.List = ar
End Sub
 
Misschien het rode gedeelte even weghalen?
 
De code heb ik verwijderd en gaat nu goed (geen foutmelding).

Het enige wat nog niet goed gaat is: dat wanneer ik zoek, door een deel van de tekst in te typen, het juiste artikel aanklik en ik de mutatie doorvoer, dat het systeem het scherm niet reset. Dit gaat echter wel goed wanneer ik direct een artikel aanklik, dus zonder deze te zoeken d.m.v. een deel van het artikel in te typen.
 
Na enig speurwerk en deels de oude codes gecombineerd met de nieuwe codes, werkt het systeem prima. Morgen nog even verder testen of alles goed werkt. Allen heel erg bedankt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan