XL97: ParamArray Must Be Declared as an Array of VariantID: Q158355
|
When you attempt to run a Visual Basic for Applications macro in Microsoft Excel 97, or while you are editing code in a Visual Basic module, you may receive the following error message:
Compile error:
ParamArray must be declared as an array of Variant
This will occur if you have declared a variable as a ParamArray and either
of the following conditions are true:
ParamArray MyVar()
-or-
In Microsoft Excel 97, variables declared as ParamArrays must be
immediately followed by an open and a close parenthesis, and must be
declared either as type Variant or as no type at all. Note that if a data
type is not specified, the variable will default to the Variant data type.
Making this change will allow your macros to work in all versions of
Microsoft Excel that support the Visual Basic for Applications macro
language, including Microsoft Excel 97.
When you write a custom Visual Basic subroutine function in Microsoft Excel, the last argument accepted by the function can be declared as a ParamArray. When you do this, the function will accept one or more values and place them in the specified variable as an array, so that they can then be used within the function. For example, if you have the following function:
Function Test(X As Integer, ParamArray Y())
Test = "Hello"
End Function
If you enter the formula
=Test(6,7,8,9,10)
in a cell, the first argument (6) will be used as the value of the variable
X. The remaining arguments (7, 8, 9, 10) will become elements in the array
Y().
Declare Function MyFunc Lib "XYZ.DLL" (X As String, ParamArray Y As
Variant) As Variant
This Declare statement will work in earlier versions of Microsoft Excel,
but it will not work in Microsoft Excel 97. If you attempt to run any
macros when this statement is present, you will receive the error message
shown in the Symptoms section of this article.
Declare Function MyFunc Lib "XYZ.DLL" (X As String, ParamArray Y() As
Variant) As Variant
Also, note that ParamArrays must be declared either as type Variant or as
no type at all:
Valid ParamArrays Invalid ParamArrays
-----------------------------------------------------
ParamArray A() ParamArray C() As Integer
ParamArray B() As Variant ParamArray D() As Double
ParamArray E() As String
ParamArray F() As Boolean
ParamArray G() As Long
For additional information on ParamArrays, please see the following
article in the Microsoft Knowledge Base:
Q151582 XL: Methods to Use Custom Functions with Varying Arguments
Additional query words: 8.00 97 XL97
Keywords : kbprg kbdta KbVBA xlvbmigrate
Version : WINDOWS:
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: July 2, 1999