Results 1 to 3 of 3

Thread: ERROR when declaring "WITHEVENTS \ EVENT"

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Mar 2009
    Posts
    18

    Unhappy ERROR when declaring "WITHEVENTS \ EVENT"

    Hello,

    I am trying to create an application in MS Word VBA but i get a error message when i have a decleration my test code is below:

    Thanks in advance.

    HTML Code:
    Private Sub test()
    Public Event DetailsChanged(sField As String)
    
    End Sub

  2. #2
    PowerPoster
    Join Date
    Dec 2004
    Posts
    25,618

    Re: ERROR when declaring "WITHEVENTS \ EVENT"

    i believe an event has to be declared in a class module in the general section

    from vba help
    Event Statement Example
    The following example uses events to count off seconds during a demonstration of the fastest 100 meter race. The code illustrates all of the event-related methods, properties, and statements, including the Event statement.

    The class that raises an event is the event source, and the classes that implement the event are the sinks. An event source can have multiple sinks for the events it generates. When the class raises the event, that event is fired on every class that has elected to sink events for that instance of the object.

    The example also uses a form (Form1) with a button (Command1), a label (Label1), and two text boxes (Text1 and Text2). When you click the button, the first text box displays "From Now" and the second starts to count seconds. When the full time (9.84 seconds) has elapsed, the first text box displays "Until Now" and the second displays "9.84"

    The code for Form1 specifies the initial and terminal states of the form. It also contains the code executed when events are raised.

    Option Explicit

    Private WithEvents mText As TimerState

    Private Sub Command1_Click()
    Text1.Text = "From Now"
    Text1.Refresh
    Text2.Text = "0"
    Text2.Refresh
    Call mText.TimerTask(9.84)
    End Sub

    Private Sub Form_Load()
    Command1.Caption = "Click to Start Timer"
    Text1.Text = ""
    Text2.Text = ""
    Label1.Caption = "The fastest 100 meter run took this long:"
    Set mText = New TimerState
    End Sub

    Private Sub mText_ChangeText()
    Text1.Text = "Until Now"
    Text2.Text = "9.84"
    End Sub

    Private Sub mText_UpdateTime(ByVal dblJump As Double)
    Text2.Text = Str(Format(dblJump, "0"))
    DoEvents
    End Sub

    The remaining code is in a class module named TimerState. The Event statements declare the procedures initiated when events are raised.

    Option Explicit
    Public Event UpdateTime(ByVal dblJump As Double)
    Public Event ChangeText()

    Public Sub TimerTask(ByVal Duration As Double)
    Dim dblStart As Double
    Dim dblSecond As Double
    Dim dblSoFar As Double
    dblStart = Timer
    dblSoFar = dblStart

    Do While Timer < dblStart + Duration
    If Timer - dblSoFar >= 1 Then
    dblSoFar = dblSoFar + 1
    RaiseEvent UpdateTime(Timer - dblStart)
    End If
    Loop

    RaiseEvent ChangeText

    End Sub
    this was actually taken from excel but i am sure it will be about the same in word
    i do my best to test code works before i post it, but sometimes am unable to do so for some reason, and usually say so if this is the case.
    Note code snippets posted are just that and do not include error handling that is required in real world applications, but avoid On Error Resume Next

    dim all variables as required as often i have done so elsewhere in my code but only posted the relevant part

    come back and mark your original post as resolved if your problem is fixed
    pete

  3. #3

    Thread Starter
    Junior Member
    Join Date
    Mar 2009
    Posts
    18

    Re: ERROR when declaring "WITHEVENTS \ EVENT"

    Thanks

    This has been very helpful.

    _YOSHI_

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width