0

i am using the following vba code to delay a macro by half a second but for some reason this line of code won't work with anything less than a second. can someone please show me where i am going wrong? thanks

This line is the problem, it wont let me put in anything less than a second. i need this to be half a second.

Application.OnTime Now + TimeValue("00:00:01"), "DoMarquee"


Sub DoMarquee()
    Dim sMarquee As String
    Dim iWidth As Integer
    Dim iPosition As Integer
    Dim rCell As Range
    Dim iCurPos As Integer

    'Set the message to be displayed in this cell
    sMarquee = "This is a scrolling Marquee."

    'Set the cell width (how many characters you want displayed at once
    iWidth = 10

    'Which cell are we doing this in?
    Set rCell = Sheet1.Range("M2")

    'determine where we are now with the message.
    '   instr will return the position of the first
    '   character where the current cell value is in
    '   the marquee message
    iCurPos = InStr(1, sMarquee, rCell.Value)

    'If we are position 0, then there is no message, so start over
    '   otherwise, bump the message to the next characterusing mid
    If iCurPos = 0 Then
        'Start it over
        rCell.Value = Mid(sMarquee, 1, iWidth)
    Else
        'bump it
        rCell.Value = Mid(sMarquee, iCurPos + 1, iWidth)
    End If

    'Set excel up to run this thing again in a second or two or whatever
    Application.OnTime Now + TimeValue("00:00:01"), "DoMarquee"
End Sub
James Gayle
  • 157
  • 1
  • 1
  • 12

1 Answers1

0

You cannot use that mechanism for less than one second triggering. There is an alternative. See: Excel VBA OnTime for less than 1 second without becoming Unresponsive

Community
  • 1
  • 1
cybermike
  • 1,107
  • 1
  • 9
  • 14