Drew Wutka
DWUTKA at Marlow.com
Wed Mar 12 10:14:08 CDT 2008
Ya learn something new everyday. Never even knew about the ParamArray option. Pretty slick. Anyhow, I whipped out my trusty 'solve all my problems' tool, otherwise known as Google, and on the second page of hits for ParamArray, I found this: http://support.microsoft.com/kb/157351 Sure enough, changing this: Function TestParamArray(strSomething As String, ParamArray tmpParams() As Variant) Dim varMember For Each varMember In tmpParams Debug.Print strSomething & " " & varMember SecondParamFunction tmpParams Next End Function Function SecondParamFunction(ParamArray tmpParams() As Variant) Dim varMember For Each varMember In tmpParams Debug.Print varMember Next End Function To this: Function TestParamArray(strSomething As String, ParamArray tmpParams() As Variant) Dim varMember For Each varMember In tmpParams Debug.Print strSomething & " " & varMember SecondParamFunction tmpParams Next End Function Function SecondParamFunction(ByVal tmpParams As Variant) Dim varMember For Each varMember In tmpParams Debug.Print varMember Next End Function Did the trick! Drew -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby Sent: Wednesday, March 12, 2008 5:23 AM To: 'Access Developers discussion and problem solving' Subject: [AccessD] Feeding an paramarray to a paramarray Paramarrays are very useful. function ListGrpMembers(ParamArray GrpMembers() as variant) dim varGrpMember for each varGrpMember in GrpMembers debug.print varGrpMember next varGrpMember end function ListGrpMembers "John", "Mary", "Robbie", "Allie" Paramarrays allow you to feed a variable number of values into a function, and then easily manipulate the array that they are placed in using a for each iterator. The problem lies if you then need to feed that array off to another function. function LogGrpMembers(Paramarray GrpMembers() as variant) end function Using a function as shown above doesn't work. If you pass the GrpMembers() array assembled in ListGrpMembers into LogGrpMembers you get a runtime error. I have "solved" this problem by unpacking the array into a collection and passing the collection into the next function. function LogGrpMembers( GrpMembers as collection) end function function ListGrpMembers(ParamArray GrpMembers() as variant) dim varGrpMember dim colGrpMembers as collection set col for each varGrpMember in GrpMembers colGrpMembers.Add varGrpMember next varGrpMember LogGrpMembers colGrpMembers end function While that works, it is cumbersome and there are times where you would really like the second function to be a ParamArray as well, perhaps so that it can be called directly if required. Am I missing something? Is there a syntax for passing a paramarray into another paramarray? John W. Colby Colby Consulting www.ColbyConsulting.com -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com The information contained in this transmission is intended only for the person or entity to which it is addressed and may contain II-VI Proprietary and/or II-VI Business Sensitive material. If you are not the intended recipient, please contact the sender immediately and destroy the material in its entirety, whether electronic or hard copy. You are notified that any review, retransmission, copying, disclosure, dissemination, or other use of, or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited.