Interfaces for VBA Forms

R

R Avery

I have several forms that I use a lot, and want a simple, clean
interface to access/populate them. What I have done is create a class
that encapsulates the form, and provides only the properties and events
necessary for using the form. However, this was before I found out that
VBA supports interfaces. Would it make more sense to just have an
interface and implement all of the interface code in the form itself, or
continue with the approach I actually used?

If so, one question I would have, would i have to alter my code in the
form to raise the interface's events? For example, button clicks? I am
unlikely to reuse the interface for any other form or class.

Or, is there a better implementation than this?

Any help would be appreciated.
 
S

Stephen Bullen

Hi R,
Would it make more sense to just have an
interface and implement all of the interface code in the form itself, or
continue with the approach I actually used?

Well, they both work, but I would tend to go for the interface route if you
have multiple forms that can implement the same interface.
If so, one question I would have, would i have to alter my code in the
form to raise the interface's events? For example, button clicks?

Ah. AFAIK, you can't raise an event on an interface from within a class
that implements the interface, so if you want to raise events, you'd be
better to stick with the wrapper class approach you started with.


Regards

Stephen Bullen
Microsoft MVP - Excel
www.BMSLtd.ie
 
R

R Avery

Thanks. But what you said led me to another question.
Ah. AFAIK, you can't raise an event on an interface from within a class
that implements the interface, so if you want to raise events, you'd be
better to stick with the wrapper class approach you started with.

Interfaces support event, correct? So if a class cannot raise an event
for the interface that it implements, how do the interface events get
raised?
 
S

Stephen Bullen

Hi R,
Interfaces support event, correct?

No, in VBA6 we can only raise events declared in a class's default
interface - we can't raise events declared in an Implemented interface.
So if a class cannot raise an event
for the interface that it implements, how do the interface events get
raised?

They don't!

That said, if you're willing to hack around the binaries, Matt Curland has
explained how it can be done:
http://groups.google.com/groups?selm=uJBxzlUdCHA.1756@tkmsftngp12

Regards

Stephen Bullen
Microsoft MVP - Excel
www.BMSLtd.ie
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top