XL: EVALUATE() Function with INDIRECT() Returns #REF! Error (131384)
The information in this article applies to:
- Microsoft Excel 2000
- Microsoft Excel 2002
- Microsoft Excel 97 for Windows
- Microsoft Excel 98 Macintosh Edition
- Microsoft Excel for Windows 5.0
- Microsoft Excel for Windows 5.0c
- Microsoft Excel for the Macintosh 5.0
- Microsoft Excel for the Macintosh 5.0a
- Microsoft Excel for Windows 95
- Microsoft Excel for Windows 95 7.0a
This article was previously published under Q131384 SYMPTOMS
In Microsoft Excel, if you use the EVALUATE() function in an XLM macro to
return the value of a formula that contains the INDIRECT() function, the
value returned by EVALUATE() is the #REF! error value.
CAUSE
This problem occurs, for example, when you use the EVALUATE() function in a
macro to return the result of another function if this function returns a
value using INDIRECT(). In the following example, the EVALUATE() function
in cell A2 returns the #REF! error value when you run the macro Test.
A1: TEST
A2: =EVALUATE("TEST2()")
A3: =RETURN()
A4:
A5: TEST2
A6: =RETURN(INDIRECT("NAME"))
NOTE: This problem does not occur in Microsoft Excel version 4.0.
WORKAROUNDMicrosoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
To work around this behavior, you can create a Microsoft Visual Basic for
Applications function in Microsoft Excel to display a value returned by a
second function (Test2 in this example) that evaluates a defined name as
in the following example:
Function Test()
' Display value returned by function Test2.
MsgBox Test2
End Function
Function Test2()
' Return the value of the defined name "name" on the workbook.
' Note that you can replace the defined name with a cell
' reference to return the value stored in a particular cell.
Test2 = Range("Name").Value
End Function
MORE INFORMATION
You can use the INDIRECT() function in a macro or on a worksheet to return
the reference specified by the function argument. You can use INDIRECT() to
return the value stored in a cell indicated by a reference in another cell.
You can use the EVALUATE() function to evaluate a formula or expression
that is in the form of text and return the result.
REFERENCES
For more information about INDIRECT, choose the Search button in Help and type:
For more information about EVALUATE, choose the Search button in Macro Functions Help and type:
Modification Type: | Minor | Last Reviewed: | 8/15/2005 |
---|
Keywords: | kbdtacode kbprb kbProgramming KB131384 |
---|
|