Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Exposing Class Module from VBA Excel 97 SR-2
I've created some class modules in an Excel 97 project (a unit testing
framework) which I would like to expose as a library to other projects (the workbooks which I want to test). From the advice I've read so far, I've created a factory module in the library which returns objects: Public Function TestManager() As TestManager Set TestManager = New TestManager End Function which means that the calling code can do something like the following: Option Explicit Public Test As Object Sub runTests() Set Test = UnitTestFactory.TestManager ' defined in library project Test.addSuite New QSheet_Test ' defined in this project Test.run End Sub This works... but the main annoyance is that there are a large number of methods used in the test fixtures, and as the library's class modules (including TestManager) aren't exposed, the VBE can't prompt with all the utility methods (AssertTrue etc.). Sub run() Test.AssertTrue 2 1 Test.AssertEquals 100, 100 Test.AssertNotEquals 100, "a sheep" Test.AssertIsNotNothing SomeObjectRef Test.... End Sub This makes the library less friendly: and I want to minimize any possible excuses to *not* unit test! I've seen advice (mainly re Access) to Export and re-Import the .cls file changing the line: Attribute VB_Exposed = False - Attribute VB_Exposed = True but this doesn't work for me. (When I export the class again, the line has been reset to VB_Exposed = False). Any suggestions gratefully received! osfameron -- |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Exposing Class Module from VBA Excel 97 SR-2
Oops, I forgot that Excel97 doesn't support PublicNotCreateable class
instancing. Ignore my reply. -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "Chip Pearson" wrote in message ... You can change the instancing property of the class to PublicNotCreateable and declare the variable as that class type rather the as Object. E.g., Dim Test As UnitTestFactory.TestManager -- Cordially, Chip Pearson Microsoft MVP - Excel Pearson Software Consulting, LLC www.cpearson.com "hakim" wrote in message om... I've created some class modules in an Excel 97 project (a unit testing framework) which I would like to expose as a library to other projects (the workbooks which I want to test). From the advice I've read so far, I've created a factory module in the library which returns objects: Public Function TestManager() As TestManager Set TestManager = New TestManager End Function which means that the calling code can do something like the following: Option Explicit Public Test As Object Sub runTests() Set Test = UnitTestFactory.TestManager ' defined in library project Test.addSuite New QSheet_Test ' defined in this project Test.run End Sub This works... but the main annoyance is that there are a large number of methods used in the test fixtures, and as the library's class modules (including TestManager) aren't exposed, the VBE can't prompt with all the utility methods (AssertTrue etc.). Sub run() Test.AssertTrue 2 1 Test.AssertEquals 100, 100 Test.AssertNotEquals 100, "a sheep" Test.AssertIsNotNothing SomeObjectRef Test.... End Sub This makes the library less friendly: and I want to minimize any possible excuses to *not* unit test! I've seen advice (mainly re Access) to Export and re-Import the .cls file changing the line: Attribute VB_Exposed = False - Attribute VB_Exposed = True but this doesn't work for me. (When I export the class again, the line has been reset to VB_Exposed = False). Any suggestions gratefully received! osfameron -- |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Exposing Class Module from VBA Excel 97 SR-2
You can change the instancing property of the class to PublicNotCreateable and declare the variable as that class type rather the as Object. E.g., Dim Test As UnitTestFactory.TestManager Chip, Thanks: I remember seeing that same advice, but in Excel 97 SR 2 I can't see a way to change the instancing property doing any of: - in Properties window for class: only property is "(Name)" - in VBAProject properties - Option keyword? - editing the .cls file out of desperation and changing the line MultiUse = -1 to read PublicNotCreateable = -1 Thanks again! osfameron ------------------------------------------------ ~~ Message posted from http://www.ExcelTip.com/ ~~View and post usenet messages directly from http://www.ExcelForum.com/ |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Creating UDF by Class Module (Leo)? | Excel Discussion (Misc queries) | |||
CLASS MODULE & SIMPLE MODULE | Excel Discussion (Misc queries) | |||
Variable from a sheet module in a class module in XL XP | Excel Programming | |||
please give an example of a class module. | Excel Programming | |||
how to declare a class module | Excel Programming |