Toon posts:

[Excel-VBA] Userform modeless openen*

Pagina: 1
Acties:
  • 171 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik probeer een Form in VBA te maken om wat data te visualizeren, echter moet de main loop van mijn VBA functie dus wel doorlopen, in Visual Basic had ik dit wel werkend denk ik echter in VBA krijgt de Form focus en loopt de main loop niet door.

Pseudo code
code:
1
2
3
4
5
6
7
8
9
10
11
Workbook_BeforeSave()

With frmSave
 .Show

 .UpdateProgressBar 0, "Starting Save"
 // do a bunch of data tasks
 .UpdateProgressBar 100, "Done!"
End With

Unload frmSave


Na het Show command is aangeroepen gaat de rest van de code door. Hoe kan ik dit doen zonder al mijn code naar de form te verplaatsen? Ik kan de form daar namelijk niet sluiten.

Bij voorkeur wil ik ook geen threading gebruiken, dit lijkt me niet zo mooi in VBA als het al zou kunnen.

bvd.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-07 17:21

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Alwaar we prijs stellen op een fatsoenlijke topictitel, dwz de vba host in tags er tussen en een titel die iets zegt over het probleem, en dat doet 'form in vba' nou niet bepaald. ;)
--> titelfix (die trouwens ook meteen het probleem oplost :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

de userform hoeft niet modeless te zijn. plaats dit gedeelte in het userform_activate event:
Visual Basic:
1
2
3
4
me.UpdateProgressBar 0, "Starting Save"
 doevents
datataskroutine
 me.UpdateProgressBar 100, "Done!"


in de module doabunch staat gewoon je datataskroutine:
Visual Basic:
1
2
3
4
5
6
7
public sub DatataskRoutine
for dataloop=1 to 1000
 '// do a bunch of data tasks
 frmsave.updateprogressbar int(dataloop/10)
doevents
next
frmsave.updateprogressbar 100