opdrachten in lussen tegelijkertijd uitvoeren

Status
Niet open voor verdere reacties.

goossenrobert

Gebruiker
Lid geworden
8 jan 2007
Berichten
6
beste lezers,

Als beginnende vba gebruiker (in excel). Heb ik het volgende probleem:

Graag wil ik dat de achtergronden van mijn formulier gaan knipperen.

Nu is het mij wel gelukt om de achtergronden te laten knipperen, alleen het probleem is dat dit om de beurt gebeurt. dus eerst gaat textbox 1 knipperen, dan textbox2 dan.. dan..

graag wil ik dat alle tekxboxen TEGELIJKERTIJD gaan knipperen
het probleem (denk ik) zit in de lussen?

wie kan mij helpen dit probleem op te lossen?

de code:

Private Sub CommandButton1_Click()
TextBox1.BackColor = vbWhite
TextBox3.BackColor = vbWhite

Dim ctl As Control
For Each ctl In Controls
If TypeOf ctl Is MSForms.textbox Then
If ctl.BackColor = vbWhite Then
For i = 1 To 10
PauseTime = 0.2
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop

ctl.BackColor = vbRed

PauseTime = 0.2
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop

ctl.BackColor = vbWhite
Next i

Else


Worksheets("Blad1").Activate
End If


End If
Next ctl
End Sub
 
Synchroon knipperende textboxen

Om de indruk te geven dat alle tekstboxen tegelijk knipperen moet je omgekeerd werken.
Nu loop je alle controls af en doet hen de één na de andere knipperen.
Als je eerst de lus plaatst met de teller en dan de controls overloopt dan lijkt het of ze tegelijk knipperen.
Code:
' Knipperlus (10 maal knipperen)
For i = 1 to 10
  ' Controls overlopen
  For Each Ctl in Controls
    ' Is de control een textbox?
    If TypeOf ctl Is MSForms.textbox Then
      ' Achtergrond op rood zetten
      ctl.BackColor = vbRed
    End If
  Next Ctl
  ' Even wachten
  PauseTime = 0.2
  Start = Timer
  Do While Timer < Start + PauseTime
    DoEvents
  Loop
  ' Controls overlopen
  For Each Ctl in Controls
    ' Is de control een textbox?
    If TypeOf ctl Is MSForms.textbox Then
      ' Achtergrond terug op wit zetten
      ctl.BackColor = vbWhite
    End If
  Next Ctl
  ' Even wachten
  PauseTime = 0.2
  Start = Timer
  Do While Timer < Start + PauseTime
    DoEvents
  Loop
Next i

Het hangt dus allemaal een beetje af van de volgorde waarin je de lussen binnen elkaar plaatst.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan