Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: UserForm - Label komt niet wanneer het moet.  (gelezen 4405 keer)

0 leden en 1 gast bekijken dit topic.

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
UserForm - Label komt niet wanneer het moet.
« Gepost op: 23 augustus 2016, 11:08:02 »
Ik heb een (redelijk uitgebreide) Adreslijst gemaakt met een UserForm.
Ook datums voor 1900 worden verwerkt, daardoor duurt het opslaan iets langer dan normaal.
Ik dacht een korte boodschap via een Label in te voegen '-Eventjes geduld-'
Maar wat ik ook probeer, die weigert steevast dienst te doen.
Voor mij een echt raadsel.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #1 Gepost op: 23 augustus 2016, 12:51:21 »
NonkeLuc, LOL.... Hij doet het echt wel, maar het proces gaat sneller dan je denkt. Dus het laten verschijnen en laten verdwijnen van het label vindt in minder dan een oogwenk plaats. En dát zie je dus niet. Zet maar 'ns een toggle point bij zo'n Label100.Visible = True. je code stopt dan en kan je handmatig 1 stapje vooruit in je code. Nu zie je het label op je formulier verschijnen. Als je 'm daarna weer door laat lopen, zie je dat die in een flits weer is verdwenen.
______________________________

Groet, Leo

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #2 Gepost op: 23 augustus 2016, 14:12:17 »
Dank je wel voor de vlugge reactie.
Inderdaad, in dit model (met 200 namen) werkt het snel. Ik heb het origineel redelijk veel moeten inkorten.
Maar in het hoofdbestand met zo'n 1000 namen, komt de label pas te voorschijn nadat er gesorteerd en herrekent werd.
Misschien krijg je een beter inzicht als de database tot 1000 opgetrokken wordt,
en de Me.Label100.Visible = False even uitschakelt.



Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #3 Gepost op: 24 augustus 2016, 06:05:12 »
Ik begrijp het niet, in dit (sterk ingekort) model werkt alles naar behoren en is Label100 overbodig.
In het officieel bestand echter blijft de Label pas komen nadat de bewerkingen uitgevoerd zijn.
Zal alles nog eens goed moeten nakijken, het werkt wel als ik de Functie voor ouderdom berekening uitschakelt.
Het zal dus ergens in die richting zijn.
Toch bedankt om het uit te proberen en de goede raadgeving.

NonkeLuc.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #4 Gepost op: 24 augustus 2016, 12:24:28 »
NonkeLuc, ik had je voorbeeld van gisteren op dat moment ff stap voor stap doorlopen. Je ziet dan dat je functie héél véélvuldig wordt aangeroepen. Ik kon niet zo gauw de logica achterhalen, maar ik ben bang dat die functie continu voor ALLE records wordt aangeroepen. Zoek het dus ff in die hoek...
______________________________

Groet, Leo

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #5 Gepost op: 24 augustus 2016, 12:38:00 »
Het ligt inderdaad bij die Functie die iedere keer alle data moet herbereken. Kan een Functie-module werken in de UserForm code?
Dan hoeft enkel de toevoeging of aanpassing herberekend te worden en niet meer de hele lijst.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #6 Gepost op: 24 augustus 2016, 14:16:37 »
Nee, een functie komt in een standaard module. Je zal dus moeten kijken WAAROM je in vredesnaam ALLE records langs gaat.
______________________________

Groet, Leo

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #7 Gepost op: 24 augustus 2016, 15:25:09 »
Omdat ouderdom berekening voor 1900 enkel mogelijk is met die Functie. Telkens er een toevoeging of aanpassing gebeurt blijft de cel ouderdom en aantal jaren gehuwd leeg. Dan ben ik verplicht alle cellen opnieuw te berekenen tenzij er een formule bestaat om enkel de lege cel te berekenen.
Met Date.Value enz. komt er steeds een foutmelding als iemand voor 1900 geboren is.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #8 Gepost op: 24 augustus 2016, 16:27:45 »
WAAROM ben je verplicht alle cellen in je database opnieuw te laten berekenen? Even voor mijn begrip... Je kan met je formulier nieuwe entries aanmaken óf muteren. Zorg er dus gewoon voor dat je het berekenen in je formulier afhandelt. Dan hoef je dus in je sheet niets te berekenen.
Maar nu ik er over nadenk... WAT ben je eigenlijk aan het berekenen? Een geboortedatum is nauwelijks een gegeven dat berekend moet worden.
______________________________

Groet, Leo

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #9 Gepost op: 24 augustus 2016, 19:51:59 »
Nee, het gaat niet om de geboortedatum maar de ouderdom, vooral voor datums van mensen geboren voor 1900.
Het verschil tussen geboortedatum en vandaag of de dag van het overlijden.

Er bestaan heel wat (ingewikkelde) formules in Excel om die te bereken maar in VBA geven ze allen een foutwaarde.
Die Functie is zowat de eenvoudigste en steeds juist. Jammer dat ik ze niet kan toepassen in een UserForm.

Function Elapsed(StartDate As Date, EndDate As Date, ReturnType As Integer)
   
    Dim StartYear As Integer
    Dim StartMonth As Integer
    Dim StartDay As Integer
    Dim EndYear As Integer
    Dim EndMonth As Integer
    Dim EndDay As Integer
    StartYear = Year(StartDate)
    StartMonth = Month(StartDate)
    StartDay = Day(StartDate)
    EndYear = Year(EndDate)
    EndMonth = Month(EndDate)
    EndDay = Day(EndDate)
       
    If EndDay < StartDay Then
        EndDay = EndDay + (DateSerial(EndYear, EndMonth + 1, EndDay) - DateSerial(EndYear, EndMonth, EndDay))
        EndMonth = EndMonth - 1
    End If
    If EndMonth < StartMonth Then
        EndMonth = EndMonth + 12
        EndYear = EndYear - 1
    End If
    Select Case ReturnType
    Case 1 '\ return year
        Elapsed = EndYear - StartYear
    Case 2 '\ return month
        Elapsed = EndMonth - StartMonth
    Case 3 '\ return day
        Elapsed = EndDay - StartDay
    End Select
End Function

Het is inderdaad een heel gedoe om die berekeningen te maken,
maar ik heb goede hoop iets te vinden die enkel de nieuwe lege cel (na invoer of aanpassing) kan berekenen.

Hierbij een overzicht van de verschillende mogelijkheden.

Offline NonkeLuc

  • Lid
  • *
  • Berichten: 19
  • Geslacht: Man
  • Oplossing.be
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #10 Gepost op: 25 augustus 2016, 15:24:22 »
OPGELOST.
Bij het ‘Toevoegen’ en ‘Aanpassen’ gewoon cel 20(T) en cel 25(Y) laten verwijzen naar respectievelijk cel 56(BD) en cel 60(BH), daar waar de berekening van ‘Ouderdom’ en ‘Aantal jaren getrouwd’ zich bevinden.
Dus in de UserForm het volgende ingeven en klaar is kees.
Cells(Rij, 20).Value = Cells(Rij, 56)
Cells(Rij, 25).Value = Cells(Rij, 60)
rng(i, 20).Value = rng(i, 56)
rng(i, 25).Value = rng(i, 60)

Meteen ook de module ‘Berekening’ verwijderen en van ‘Label100’ is er geen sprake meer, alles werkt nu heel vlot.

Nogmaals bedankt voor uw medewerking en ondersteuning,

NonkeLuc.

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.277
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: UserForm - Label komt niet wanneer het moet.
« Reactie #11 Gepost op: 26 augustus 2016, 07:38:15 »
NonkeLuc, Dank voor je terugkoppeling en top dat je het hebt opgelost!
______________________________

Groet, Leo

 


www.combell.com