Tags: ackcolor, blink, blinking, button, excel, microsoft, msdn, red, redto, software, switch, userform

blinking button

On Microsoft » Microsoft Excel

8,069 words with 5 Comments; publish: Fri, 06 Jun 2008 12:26:00 GMT; (306187.50, « »)

Hi,

I have a button on a userform.

i would like te button to blink (making the button ackcolor switch from red

to white to red to white etc...) for 3 seconds.

How can i do this in VBA ?

Thanks,

Pierre

Message posted via http://www.officekb.com

All Comments

Leave a comment...

  • 5 Comments
    • use the wait ant the backcolor propierties

      "Pierre" wrote:

      > Hi,

      > I have a button on a userform.

      > i would like te button to blink (making the button ackcolor switch from red

      > to white to red to white etc...) for 3 seconds.

      > How can i do this in VBA ?

      > Thanks,

      > Pierre

      > --

      > Message posted via http://www.officekb.com

      >

      #1; Fri, 06 Jun 2008 12:27:00 GMT
    • hi filo666

      Thanks for the help but do you have some vba code for me please ?

      Thanks,

      Pierre

      filo666 wrote:[vbcol=seagreen]

      >use the wait ant the backcolor propierties

      >[quoted text clipped - 4 lines]

      Message posted via OfficeKB.com

      http://www.officekb.com/Uwe/Forums.a...mming/200511/1

      #2; Fri, 06 Jun 2008 12:29:00 GMT
    • In your activate event:

      Private Sub UserForm_Activate()

      CommandButton1.BackColor = 4966415

      newHour = Hour(Now())

      newMinute = Minute(Now())

      newSecond = Second(Now()) + 1

      waittime = TimeSerial(newHour, newMinute, newSecond)

      Application.Wait waittime

      CommandButton1.BackColor = 4966555

      Application.ScreenUpdating = True

      newHour = Hour(Now())

      newMinute = Minute(Now())

      newSecond = Second(Now()) + 1

      waittime = TimeSerial(newHour, newMinute, newSecond)

      Application.Wait waittime

      CommandButton1.BackColor = 3966555

      Application.ScreenUpdating = True

      newHour = Hour(Now())

      newMinute = Minute(Now())

      newSecond = Second(Now()) + 1

      waittime = TimeSerial(newHour, newMinute, newSecond)

      Application.Wait waittime

      CommandButton1.BackColor = 2966555

      Application.ScreenUpdating = True

      newHour = Hour(Now())

      newMinute = Minute(Now())

      newSecond = Second(Now()) + 1

      waittime = TimeSerial(newHour, newMinute, newSecond)

      Application.Wait waittime

      CommandButton1.BackColor = 4566555

      Application.ScreenUpdating = True

      End Sub

      I know it looks difficult, you just need to find the colors you want and

      change the number of the color, any further question please aske me, I made

      this fast, but with some time you can make this in 4 or 5 lines (with for

      statements)

      HTH

      "Pierre via OfficeKB.com" wrote:

      > hi filo666

      > Thanks for the help but do you have some vba code for me please ?

      > Thanks,

      > Pierre

      > filo666 wrote:

      > --

      > Message posted via OfficeKB.com

      > http://www.officekb.com/Uwe/Forums.a...mming/200511/1

      >

      #3; Fri, 06 Jun 2008 12:30:00 GMT
    • Hello Pierre,

      Here is a macro than can be used with any button name on any form.

      Insert a new VBA module into your project and paste the code into.

      EXAMPLES OF CALLING BLINKBUTTON MACRO:

      If you want to blink CommandButton1...

      Call BlinkButton(CommandButton1)

      If you have 2 UserForms open and want to blink CommandButton1 on

      UserForm2...

      Call BlinkButton(UserForm2.CommandButton1)

      You can make the call from anywhere in your code.

      Code:

      '/////////////////////////////////////////'

      '/ /'

      '/ Sleep suspends program activity /'

      '/ for an interval given in Milli- /'

      '/ Seconds. 1 millisecond = 1/1000 /'

      '/ of a second. /'

      '/ /'

      '/////////////////////////////////////////'

      Public Declare Function Sleep _

      Lib "kernel32.dll" _

      (ByVal dwMillisecs As Long) As Long

      Public Sub BlinkButton(Button As MSForms.Control)

      'To use BlinkButton:

      'Call BlinkButton(CommandButton1)

      Dim N As Long

      Dim OrigClr

      Dim X As Object

      Dim FormName

      OrigClr = Button.BackColor

      Set X = Button

      'Get the Name of the UserForm the button is on

      Do

      FormName = X.Parent.Name

      On Error Resume Next

      Set X = X.Parent

      If Err.Number <> 0 Then

      Err.Clear

      Exit Do

      End If

      Loop

      'The UserForms collection can only be indexed by a number

      For I = 0 To UserForms.Count - 1

      If UserForms(I).Name = FormName Then

      N = I

      Exit For

      End If

      Next I

      'Blink the button - 1/2 second White, 1/2 second Red, 3 times

      For I = 1 To 3

      Button.BackColor = vbWhite

      UserForms(N).Repaint

      Sleep (500)

      Button.BackColor = vbRed

      UserForms(N).Repaint

      Sleep (500)

      Next I

      'Set the button back to it's orignal color

      Button.BackColor = OrigClr

      End Sub

      Sincerely,

      Leith Ross

      Leith Ross

      Leith Ross's Profile: http://www.mcse.ms/member.php?action...o&userid=18465

      View this thread: http://www.mcse.ms/showthread.php?threadid=487389

      #4; Fri, 06 Jun 2008 12:30:00 GMT
    • Hi Leath,

      Thanks for your help. This works fine !!!

      I adjusted your code a little bit because the line:

      UserForms(N).Repaint

      caused my whole application to sort of blink...

      I changed it to

      DoEvents

      And now only the button is flashing !!!

      thanks again,

      Pierre

      Leith Ross wrote:

      >Hello Pierre,

      >Here is a macro than can be used with any button name on any form

      >Insert a new VBA module into your project and paste the code into.

      >EXAMPLES OF CALLING BLINKBUTTON MACRO

      >If you want to blink CommandButton1...

      >Call BlinkButton(CommandButton1)

      >If you have 2 UserForms open and want to blink CommandButton1 o

      >UserForm2...

      >Call BlinkButton(UserForm2.CommandButton1)

      >You can make the call from anywhere in your code.

      >Code

      >--

      > '/////////////////////////////////////////'

      > '/ /'

      > '/ Sleep suspends program activity /'

      > '/ for an interval given in Milli- /'

      > '/ Seconds. 1 millisecond = 1/1000 /'

      > '/ of a second. /'

      > '/ /'

      > '/////////////////////////////////////////'

      >

      > Public Declare Function Sleep _

      > Lib "kernel32.dll" _

      > (ByVal dwMillisecs As Long) As Long

      > Public Sub BlinkButton(Button As MSForms.Control)

      > 'To use BlinkButton:

      > 'Call BlinkButton(CommandButton1)

      > Dim N As Long

      > Dim OrigClr

      > Dim X As Object

      > Dim FormName

      > OrigClr = Button.BackColor

      > Set X = Button

      > 'Get the Name of the UserForm the button is on

      > Do

      > FormName = X.Parent.Name

      > On Error Resume Next

      > Set X = X.Parent

      > If Err.Number <> 0 Then

      > Err.Clear

      > Exit Do

      > End If

      > Loop

      >

      > 'The UserForms collection can only be indexed by a number

      > For I = 0 To UserForms.Count - 1

      > If UserForms(I).Name = FormName Then

      > N = I

      > Exit For

      > End If

      > Next I

      > 'Blink the button - 1/2 second White, 1/2 second Red, 3 times

      > For I = 1 To 3

      > Button.BackColor = vbWhite

      > UserForms(N).Repaint

      > Sleep (500)

      > Button.BackColor = vbRed

      > UserForms(N).Repaint

      > Sleep (500)

      > Next I

      > 'Set the button back to it's orignal color

      > Button.BackColor = OrigClr

      > End Sub

      >--

      >Sincerely,

      >Leith Ros

      Message posted via OfficeKB.com

      http://www.officekb.com/Uwe/Forums.a...mming/200511/1

      #5; Fri, 06 Jun 2008 12:32:00 GMT