You didn't describe what, exactly, it is doing, and you didn't post the code that you used to try to reload the message.
My guess is that you maybe didn't set up the query on the message to wait around, open, until your timer ran out, then read the next one. So it may be reading and loading the same message over and over again.
I'm going to assume you're using a label called lblScroll and are changing its .Left property every time your timer ticks.
Here's how I'd set it up so that you don't have to keep a query recordset sitting around for no good reason.
1) Create a hidden listbox lstMsg.
Set lstMsg.Visible = No and .Enabled = no.
Set lstMsg.[Row Source] = "Select [Message] from [tbl_Messages]"
(This assumes that you want all the Message records, in any order. If not, then you should add whatever limits and ORDER BY you want on the messages)
2) Create a hidden text box txtMsgno.
Set txtMsgNo.Visible = No and txtMsgNo.Enabled = no.
Set txtMsgNo.[Default Value] = 0
3) Whenever your timer says to change the message,
Code:
' calculate next message number
txtMsgNo = txtMsgNo + 1
if txtMsgNo > lstMsg. then
txtMsgNo = 0
end if
' set next message caption
lblScroll.Caption = lstMsg.Control(txtMsgNo)
'set label back to the middle
lblScroll.Left = 700