XL: EVALUATE() Function with INDIRECT() Returns #REF! Error

Last reviewed: February 3, 1998
Article ID: Q131384
The information in this article applies to:
  • Microsoft Excel for Windows, versions 5.0, 5.0c
  • Microsoft Excel for the Macintosh, versions 5.0, 5.0a
  • Microsoft Excel for Windows 95, versions 7.0, 7.0a
  • Microsoft Excel 97 for Windows
  • Microsoft Excel 98 Macintosh Edition

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.

WORKAROUND

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and 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 needs. If you have limited programming experience, you may want to contact the Microsoft fee-based consulting line at (800) 936-5200. For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

   http://www.microsoft.com/support/supportnet/refguide/default.asp

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:

   INDIRECT function

For more information about EVALUATE, choose the Search button in Macro Functions Help and type:

   EVALUATE function


Additional query words: XL98 XL97 XL7 XL5 5.00 5.00a 5.00c 7.00 7.00a
Keywords : kbcode kbprg PgmHowto
Version : WINDOWS:5.0,5.0c,7.0,97; MACINTOSH:5.0,5.0a,98
Platform : MACINTOSH WINDOWS
Issue type : kbprb
Solution Type : kbworkaround


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: February 3, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.