Allen,
Ik heb een totaalsheet waar de data van meerdere andere werkboeken in wordt geïmporteerd. Dit gebeurd door middel van een macro met een For Each statement.
Dit werkt prima.
Alleen kan het zijn dat de macro er lang over doet. Dus ik wil een melding laten zien in de tussentijd. Ik dacht dit op te lossen met een knop (zonder achterliggende macro) die ik zichtbaar maak aan het begin van de macro en weer verberg aan het einde. De knop staat vooraf goed gepositioneerd op de sheet.
Wanneer ik de volgende statement met True / False gebruik, gaat dit goed als ik ALLEEN die actie wil uitvoeren.
Wanneer ik de uit te voeren macro ertussen plaats gaat het goed bij de 'simpele' opdrachten, zoals een naam in een cel plaatsen.
ECHTER, wanneer ik een For Each statement in de macro zet, dan voert hij eerst deze For Each uit, en daarna schakelt hij de knop (mijn melding) aan en uit.
(trouwens, als ik via F8 de macro naloop, dan gaat het wel goed! Maar dus niet als je het in één keer afspeelt...)
Waarom krijgt de For Each voorrang terwijl deze chronologisch later in de macro voorkomt?
Omdat ik er een voorbeeld bij wilde plaatsen en ik niet de echte data mag publiceren, heb ik een test bestand gebouwd. Let dus aub niet op het nut van wat hij doet, want dat is er niet.
Maar doordat in mijn test de verwerktijd wel snel is, gebeurd alles in een flits.
Aangezien ik de volgorde van uitvoeren wilde zien, dacht ik een messagebox in te voeren, zodat ik steeds op OK moest klikken om naar de volgende actie in For Each te gaan. Dat zou zorgen voor een pauze, waardoor ik kon checken of de melding eerst verscheen.
Nu blijkt dat eerst 10x de messagebox wordt uitgevoerd en daarna de For Each waardoor de waarde in een flits worden geplaatst. Wanneer de melding plaatsvind kan ik nog steeds niet zien.
Waarom krijgt de msgbox binnen de For Each voorrang op de andere actie binnen dezelfde For Each?
Helaas mag ik geen voorbeeld uploaden, maar ik kan wel de macro posten.
Het gaat om 1 tabblad (buttons), waar de melding een vlak is ter grootte van cellen G3-J12, en de data in kolommen L1-P1 en L4-L13 komt.
Hopelijk kan iemand mij helpen?
Bij voorbaat dank!
Marije
Ik heb een totaalsheet waar de data van meerdere andere werkboeken in wordt geïmporteerd. Dit gebeurd door middel van een macro met een For Each statement.
Dit werkt prima.
Alleen kan het zijn dat de macro er lang over doet. Dus ik wil een melding laten zien in de tussentijd. Ik dacht dit op te lossen met een knop (zonder achterliggende macro) die ik zichtbaar maak aan het begin van de macro en weer verberg aan het einde. De knop staat vooraf goed gepositioneerd op de sheet.
Wanneer ik de volgende statement met True / False gebruik, gaat dit goed als ik ALLEEN die actie wil uitvoeren.
Code:
ActiveSheet.Shapes("Button 1").Visible = True
ActiveSheet.Shapes("Button 1").Visible = False
Wanneer ik de uit te voeren macro ertussen plaats gaat het goed bij de 'simpele' opdrachten, zoals een naam in een cel plaatsen.
ECHTER, wanneer ik een For Each statement in de macro zet, dan voert hij eerst deze For Each uit, en daarna schakelt hij de knop (mijn melding) aan en uit.
(trouwens, als ik via F8 de macro naloop, dan gaat het wel goed! Maar dus niet als je het in één keer afspeelt...)
Waarom krijgt de For Each voorrang terwijl deze chronologisch later in de macro voorkomt?
Omdat ik er een voorbeeld bij wilde plaatsen en ik niet de echte data mag publiceren, heb ik een test bestand gebouwd. Let dus aub niet op het nut van wat hij doet, want dat is er niet.
Maar doordat in mijn test de verwerktijd wel snel is, gebeurd alles in een flits.
Aangezien ik de volgorde van uitvoeren wilde zien, dacht ik een messagebox in te voeren, zodat ik steeds op OK moest klikken om naar de volgende actie in For Each te gaan. Dat zou zorgen voor een pauze, waardoor ik kon checken of de melding eerst verscheen.
Nu blijkt dat eerst 10x de messagebox wordt uitgevoerd en daarna de For Each waardoor de waarde in een flits worden geplaatst. Wanneer de melding plaatsvind kan ik nog steeds niet zien.
Waarom krijgt de msgbox binnen de For Each voorrang op de andere actie binnen dezelfde For Each?
Helaas mag ik geen voorbeeld uploaden, maar ik kan wel de macro posten.
Het gaat om 1 tabblad (buttons), waar de melding een vlak is ter grootte van cellen G3-J12, en de data in kolommen L1-P1 en L4-L13 komt.
Code:
Sub Import()
ActiveSheet.Shapes("Button 1").Visible = True
Application.ScreenUpdating = False
'Verwijderen van de huidige data.
Columns("L:P").Select
Selection.Delete Shift:=xlToLeft
Range("L1").Select
'Invoegen van de kolomkoppen en opmaak.
Range("L1") = "Kop1"
Range("M1") = "Kop2"
Range("N1") = "Kop3"
Range("O1") = "Kop4"
Range("P1") = "Kop5"
Rows("1:1").Font.Bold = True
Columns("L:P").ColumnWidth = 14
Range("L3").Select
'Overzetten van data.
Dim gebied() As Variant
Dim cijfer As Variant
Dim teller As Long
gebied = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
teller = 1
For Each cijfer In gebied
ActiveCell.Offset(teller, 0) = cijfer
MsgBox "volgende cijfer?"
teller = teller + 1
Next cijfer
Application.ScreenUpdating = True
ActiveSheet.Shapes("Button 1").Visible = False
End Sub
Hopelijk kan iemand mij helpen?
Bij voorbaat dank!
Marije
Laatst bewerkt: