View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
Peter T Peter T is offline
external usenet poster
 
Posts: 5,600
Default How do I access a sub in a New Class

I probably should have mentioned before, if intending to use the same class
instance in multiple workbooks, I'd strongly suggest maintaining only one
reference to it in the Class's own project. A reference to the class can be
obtained as and when required by other workbooks ideally with a Property Get
and passing whatever details are required to identify the class. The actual
references of course could be stored in say an Array or Collection declared
at module level in the Class workbook

If multiple references are maintained to a Class instance there could be
problems in "tearing down" leading to memory leaks.

Regards,
Peter T


"Mike" wrote in message
om...
Thanks Peter. It took me a while to understand what you were getting at.
But after everything fell into place, it gave me exactly what I was
looking for.

Thanks again!!!



"Peter T" <peter_t@discussions wrote in message
...
Difficult to follow your code because nothing like that's going to work.

First ensure Instancing for Class1 is PublicNotCreatable

In a normal module in the same project

Function NewClass1() As Class1
Set NewClass1 = New Class1
End Function

Ensure the project has a unique name, rename VBProject to say ClassTest

Save the file (might be an idea to close and reopen it)

In another wb set a reference to ClassTest, and in a normal module
something like the following

Sub test()
Dim c As ClassTest.Class1
Set c = ClassTest.NewClass1
MsgBox TypeName(c)

' type c and a dot and should get the intellisense

End Sub

Regards,
Peter T


"Mike" wrote in message
om...
From project "VBAProject(Book1.xlsm):"I am trying to access sub
"subInNewClass" in a new class that is in Project "newclass(class
test.xlsm)". Both methods below produce errors.

Any help would be appreciated.


-----------------------------------
In Project newclass(class test.xlsm)

In Class Module Class1:

Option Explicit
Public Sub subInNewClass()
MsgBox "I'm in"
End Sub

In VBAProject(Book1.xlsm):

Set reference to Project newclass

In Userform1

Option Explicit
Dim qq As New Class1
Private Sub UserForm_Click()
qq.subInNewClass
End Sub
-----------------------------------------------------------
I also tried:

Option Explicit
Dim qq As Class1
Dim kk
Private Sub UserForm_Click()
Set kk = qq
kk.subInNewClass
End Sub