Visual Basic Code of the Week (COTW)
Issue #37
All content and source code is Copyright (c) 1998 by C&D Programming Corp. No part of this issue can be reprinted or distributed in any manner without express written permission of C&D Programming Corp.

Requirements for this Issue

The source code in this issue is designed for Visual Basic 5.0 and above. It is geared towards the intermediate to advanced programmer. If you have any questions about this issue, please email us at

In this Issue

This issue shows how to implement a timer without requiring a Form or the Timer Control. It accomplishes this task by using a couple of API calls, a class and a module. It is useful for situations where your program might not have a form based interface, such as a background task or a data collection module that run indepently from the user interface.

Timer Class

The Timer class contains two routines for starting (StartTimer) and stopping (StopTimer) the timer. It also exposes an event called TimerEvent. This event is raised to the task that created the Timer Class object. This event behaves the same as the the Timer event that the Timer control raises. For more details about this see the sample code.


Public Function StartTimer(ByVal interval As Long) As Boolean
Public Sub StopTimer()


Return Value

StartTimer returns True if it was able to create a timer otherwise it returns False.

Sample Usage

This example can be used to gather some information about your system once every lSeconds seconds for lCount times. Some important things to note. The declaration of tmr includes the WithEvents statement. This allows the Timer class to raise an event in the class or form that the class is created in. It is also important to note that the VBTimer.Timer object must be created using the CreateObject function. This is the only way that the event can be defined and will be raised.

Dim WithEvents tmr As VBTimer.Timer

Dim mlCount As Long

Public Sub LogIt(lCount As Long, lSeconds As Long)
    If lSeconds > 60 Then
        lSeconds = 60    ' Only allow 60 seconds between intervals
    End If
    Set tmr = CreateObject("VBTimer.Timer")
    tmr.StartTimer lSeconds * 1000
    mlCount = 0
    While mlCount <> lCount
End Sub

Private Sub tmr_TimerEvent()
    Debug.Print "Ticked..." & mlCount
    ' log something here.  Make memory usage or something
    ' like that.  This can be the start of a background
    ' information logger.
    mlCount = mlCount + 1
End Sub

Source Code

To see the source code for this issue you must be a subscriber to Code of the Week. If you are a subscriber the source code is available at the following address:

That should be all you need to do to use the formless timer.

This document is available on the web

Paid subscribers can view this issue in HTML format. There is no additional source or information in the HTML formatted document. It just looks a little better since we have included some HTML formatting. Just point your browser to


That concludes this issue of COTW. We hope you find the source code useful in your development.

The below describes the ways you can supply us some feedback about COTW. We would like to see our members help mold COTW into the best Visual Basic source code resource available. But to do that we need your feedback about what you like and what you do not like about COTW.

NEW! Online Catalog now available!

We have entered a partnership with VBXtras to provide many development tools available for sale on our web site. For a limited time we are offering a FREE one year subscription for anyone who purchases any products through our web site. If you are currently shopping for some cool tools, check out

This area is new and does not yet have all products online. If there is something particular you are looking for (and can't find it on our site), please let us know. We probably can get it for you at a great price!


If you are interested in advertising in COTW please email us at Our rates are VERY reasonable, actually they are almost FREE. We reach over three thousand Visual Basic developers each week.

How to tell us what you think

If you have any suggestions for topics you would like to see covered or questions about this issue, please email them to or use online feedback form at

If you have any source code you would like to submit for possible inclusion in COTW, please fill out our online submission form at

Contact Information

C&D Programming Corp.
PO Box 20128
Floral Park, NY 11002-0128
Phone or Fax: (212) 504-7945

Subscription Update

Thank you for trying Code of the Week for Visual Basic.

Your free trial expires after you receive your fourth issue. If you want to continue to receive Code of the Week you can get 52 issues of COTW for only $19.95. This is a full year of Visual Basic source code and information to help with all your development. So don't wait, subscribe now! The quickest way to subscribe is to jump to our online order form at