xlfCaller

Applies to: Excel 2013 | Office 2013 | Visual Studio

Returns information about the cell, range of cells, command on a menu, tool on a toolbar, or object that called the DLL command or function that is currently running.

Code called from Returns
DLL
The Register ID.
A single cell
A single-cell reference.
A multi-cell array formula
A multi-cell reference.
A conditional formatting expression
A reference to the cell to which the formatting condition is applied.
A menu
A four-element single-row array:
The bar ID. The menu position. The submenu position. The command position.
A toolbar
A two-element single-row array:
The toolbar number for built-in toolbars or the toolbar name for custom toolbars. The position on the toolbar.
A graphic object
The object identifier (object name).
A command associated with an xlcOnEnter, ON.ENTER, event trap
A reference to the cell or cells being entered.
A command associated with an xlcOnDoubleclick, ON.DOUBLECLICK, event trap. The cell that was double-clicked (not necessarily the active cell).
Auto_Open, AutoClose, Auto_Activate or Auto_Deactivate macro
The name of the calling sheet.
Other methods not listed
#REF! Error.
Excel12(xlfCaller, (LPXLOPER12) pxRes,0);

Property value/Return value

The return value is one of the following XLOPER/ XLOPER12 data types: xltypeRef, xltypeSRef, xltypeNum, xltypeStr, xltypeErr, or xltypeMulti. Since three of these types point to allocated memory, the return value of xlfCaller should always be freed in a call to the xlFree function when it is no longer needed.

For more information about XLOPERs/ XLOPER12s see Memory Management in Excel.

Remarks

This function is the only non-worksheet function that can be called from a DLL/XLL worksheet function. Other XLM information functions can only be called from commands or macro-sheet equivalent functions.

Example

\SAMPLES\EXAMPLE\EXAMPLE.C. This function calls a command macro (xlcSelect) and will work correctly only when called from a macro sheet.

short WINAPI CallerExample(void)
{
   XLOPER12 xRes;
   Excel12(xlfCaller, &xRes, 0);
   Excel12(xlcSelect, 0, 1, (LPXLOPER12)&xRes);
   Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes);
   return 1;
}

See also

Essential and Useful C API XLM Functions