Kamis, 20 Juni 2013

Re: [ExcelVBA] I'd like a Before_UserForm_Terminate Event

 

Hi Steve,

AFAIK Userform modules are a sort of class module and you can add events to them.

Check out the WithEvents keyword.

I don't know how useful this is so please don't shout at me! hehehe

HTH
Lisa

Sent: Wed, Jun 19, 2013 4:31 am

Subject: [ExcelVBA] I'd like a Before_UserForm_Terminate Event

Excel 2007

Unless one of you has a work around, I'll just move on.

I have a UserForm (Name is "PortSetup") that asks for some setup items (ports,
baud rates & stuff). It opens with the previously used values.

When the Save button is clicked I show a short verification message ("Changes
Accepted" - this is a Label I make visible).

When the Cancel button is clicked I show another Label on the Form ("Changes
Canceled" - Label Name is ChangesCancel).

The above all work fine.

I would also like to show the Cancel verification message when the [x]
Terminate box is clicked, but it won't show (visible = True) when I have the
code located in the UserForm_Terminate() Subroutine. The form still is showing,
and other things happen, but not the Label Visible...(Google is your friend: see
MSDN below)

The UserForm_Deactivate() doesn't fire either.

MSDN says: The Terminate Event "Occurs when all references to an instance of
an object are removed from memory by setting all variables that refer to the
object to Nothing..." AND...
"The Terminate event occurs after the object is unloaded. "

... AFTER...bummer...

Pinging the Object Browser for "Before" shows no BeforeTerminate.

Looks like this is a nice idea only... Eh?

Regards, Steve

Code, FWIW:
This works:
------------- The working Cancel Button Event -----------------
Private Sub SetupCancel_Click()
Debug.Print "****** Setup Form Canceled ******"
' Show verification then hide it.
Me.ChangesCancel.Visible = True ' Show it
Me.Repaint
Wait (40) ' Wait a bit
Me.ChangesCancel.Visible = False ' Kill it
Me.Repaint
Wait (5)

ActiveCell.Activate
PortSetup.Hide ' Back to Kansas
End Sub
----- Terminate [x] DOES NOT work (as expected, I guess...)-----
Private Sub UserForm_Terminate()
Debug.Print "****** Setup Form Terminated ******"
' The above line shows in the Immediate Window when [x] is clicked.

Me.ChangesCancel.Visible = True ' This doesn't show on the Form!
Me.Repaint
Wait (40) ' This Wait Sub executes.
Me.ChangesCancel.Visible = False
Me.Repaint
Wait (5) ' This Wait Sub also Executes.

ActiveCell.Activate
PortSetup.Hide
End Sub
-------------------------------------
[EOF]

[Non-text portions of this message have been removed]

__._,_.___
Reply via web post Reply to sender Reply to group Start a New Topic Messages in this topic (5)
Recent Activity:
----------------------------------
Be sure to check out TechTrax Ezine for many, free Excel VBA articles! Go here: http://www.mousetrax.com/techtrax to enter the ezine, then search the ARCHIVES for EXCEL VBA.

----------------------------------
Visit our ExcelVBA group home page for more info and support files:
http://groups.yahoo.com/group/ExcelVBA

----------------------------------
More free tutorials and resources available at:
http://www.mousetrax.com

----------------------------------
.

__,_._,___

Tidak ada komentar:

Posting Komentar