Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
VB6.0
Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Ronald,
If you want multiple instances of a class, why not create a collection class? It does mean that you have to code the .Add and .Remove methods, but it is not difficult. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... VB6.0 Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
If you notice in the example that I stated, the TempEmployees is the
collection class while the TempEmployee is the Individual object class similar to the Worksheets collection class with the Worksheet individual object class. The TempEmployees collection class is a holder for all of the individual TempEmployee object classes (One per temporary employee). As such, there only needs to be one TempEmployees collection object in memory vs several TempEmployee individual objects in memory. The problem I'm having, I want to expose this TempEmployees Object to be visible across the entire project, not just within the module. As it currently stands, I can only think of using either properties or methods to set that, which seems to be a lot of work (when you have to do it across several different classes) that would save some time and prevent possible overlooking if it could just be set to a variable that could be seen across the project (I.e. Within VB6, you use the Friend keyword which allows such cases to be seen outside of the module the code in it, but not outside of the project the code is in.) -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, If you want multiple instances of a class, why not create a collection class? It does mean that you have to code the .Add and .Remove methods, but it is not difficult. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... VB6.0 Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Ronald,
I am not getting this. I have just created a class and a collection class, and setup multiple instances of the first. My collection class variable was a public variable. In another module, I accessed this public collection class variable no problems. I guess I am not getting the problem? -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... If you notice in the example that I stated, the TempEmployees is the collection class while the TempEmployee is the Individual object class similar to the Worksheets collection class with the Worksheet individual object class. The TempEmployees collection class is a holder for all of the individual TempEmployee object classes (One per temporary employee). As such, there only needs to be one TempEmployees collection object in memory vs several TempEmployee individual objects in memory. The problem I'm having, I want to expose this TempEmployees Object to be visible across the entire project, not just within the module. As it currently stands, I can only think of using either properties or methods to set that, which seems to be a lot of work (when you have to do it across several different classes) that would save some time and prevent possible overlooking if it could just be set to a variable that could be seen across the project (I.e. Within VB6, you use the Friend keyword which allows such cases to be seen outside of the module the code in it, but not outside of the project the code is in.) -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, If you want multiple instances of a class, why not create a collection class? It does mean that you have to code the .Add and .Remove methods, but it is not difficult. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... VB6.0 Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
If I set the class to public, I get the below message at compile time:
Private object modules cannot be used in public object modules as parameters or return types for public procedures, as public data members, or as fields of public user defined types and it highlights the following signature line within the public collection class: Public Property Get prp_ro_TempEmployeeByID(ByVal l_strIdentificationCode As String) As clsTempEmployee As for using "As Object" in place of "As clsTempEmployee", I don't particularly care for doing that either as that gets away from good programming practices. Now when I have the collection class as private, it no longer errors out during compilation time. -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, I am not getting this. I have just created a class and a collection class, and setup multiple instances of the first. My collection class variable was a public variable. In another module, I accessed this public collection class variable no problems. I guess I am not getting the problem? -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... If you notice in the example that I stated, the TempEmployees is the collection class while the TempEmployee is the Individual object class similar to the Worksheets collection class with the Worksheet individual object class. The TempEmployees collection class is a holder for all of the individual TempEmployee object classes (One per temporary employee). As such, there only needs to be one TempEmployees collection object in memory vs several TempEmployee individual objects in memory. The problem I'm having, I want to expose this TempEmployees Object to be visible across the entire project, not just within the module. As it currently stands, I can only think of using either properties or methods to set that, which seems to be a lot of work (when you have to do it across several different classes) that would save some time and prevent possible overlooking if it could just be set to a variable that could be seen across the project (I.e. Within VB6, you use the Friend keyword which allows such cases to be seen outside of the module the code in it, but not outside of the project the code is in.) -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, If you want multiple instances of a class, why not create a collection class? It does mean that you have to code the .Add and .Remove methods, but it is not difficult. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... VB6.0 Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Ronald,
Nowhere have I suggested that you set the class instancing type to public, I used private in both mine. I was talking about creating the collection class variable as public. Perhaps it would be best to give the whole code for us to try. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... If I set the class to public, I get the below message at compile time: Private object modules cannot be used in public object modules as parameters or return types for public procedures, as public data members, or as fields of public user defined types and it highlights the following signature line within the public collection class: Public Property Get prp_ro_TempEmployeeByID(ByVal l_strIdentificationCode As String) As clsTempEmployee As for using "As Object" in place of "As clsTempEmployee", I don't particularly care for doing that either as that gets away from good programming practices. Now when I have the collection class as private, it no longer errors out during compilation time. -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, I am not getting this. I have just created a class and a collection class, and setup multiple instances of the first. My collection class variable was a public variable. In another module, I accessed this public collection class variable no problems. I guess I am not getting the problem? -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... If you notice in the example that I stated, the TempEmployees is the collection class while the TempEmployee is the Individual object class similar to the Worksheets collection class with the Worksheet individual object class. The TempEmployees collection class is a holder for all of the individual TempEmployee object classes (One per temporary employee). As such, there only needs to be one TempEmployees collection object in memory vs several TempEmployee individual objects in memory. The problem I'm having, I want to expose this TempEmployees Object to be visible across the entire project, not just within the module. As it currently stands, I can only think of using either properties or methods to set that, which seems to be a lot of work (when you have to do it across several different classes) that would save some time and prevent possible overlooking if it could just be set to a variable that could be seen across the project (I.e. Within VB6, you use the Friend keyword which allows such cases to be seen outside of the module the code in it, but not outside of the project the code is in.) -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 "Bob Phillips" wrote in message ... Ronald, If you want multiple instances of a class, why not create a collection class? It does mean that you have to code the .Add and .Remove methods, but it is not difficult. -- __________________________________ HTH Bob "Ronald R. Dodge, Jr." wrote in message ... VB6.0 Excel 2002, SP3 How can I get private and public instancing class modules to communicate with each other? Example I am creating a program that using a class name of "TempEmployee" (Need multiple instances of this class, thus private instance is the only instance available) and a collection class name of "TempEmployees" (This object, only need one instance of it and I would like to be able to reference to it from within any other module within the project, but when I attempt to set a public variable to it, it comes back stated can't do it as a public variable can't contain a private class module). I also get the same basic issue with I attempt to combine public and private classes into each other. What is the best way to resolve this issue so as I don't have to do so much coding and work arounds? One way, I could create properties in so many other objects as a reference to this one object, on the other hand, that in itself seems to be a lot of work and could lead to possible overlooking. What is a good book on this sort of VBA Class module coding? -- Thanks, Ronald R. Dodge, Jr. Production Statistician Master MOUS 2000 |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
difference between a private sub and a public function? | Excel Discussion (Misc queries) | |||
Class modules: parametrize class object fields | Excel Programming | |||
Public, Private, Event modules, Forms modules,,, | Excel Programming | |||
Basic question - modules and class modules - what's the difference? | Excel Programming | |||
public but private variables | Excel Programming |