Our next example of a macro function makes use of the CXllFinder class.
Note: the full code for this example can be found in the project FindReplace in the Samples sub-directory.
Create a new function FindReplace() as shown below.
Amend the generated code as shown below, and build the project.
//{{XLP_SRC(FindReplace) // NOTE - the FunctionWizard will add and remove mapping code here. // DO NOT EDIT what you see in these blocks of generated code! IMPLEMENT_XLLFN2(FindReplace, "A", "FindReplace", "", "User Defin" "ed", "Demonstrate find/replace", "", "", 2) extern "C" __declspec( dllexport ) BOOL FindReplace() { //}}XLP_SRC const char* apszPairs[] = { "Fred", "Freda", "George", "Georgina", 0 }; // Iterate through each find/replace task for (int i = 0; apszPairs[i]; i += 2) { // Create a finder CXllFinder finder(apszPairs[i], FALSE, TRUE); // Alternatively - create a finder for a specific sheet //CXllFinder finder(apszPairs[i], FALSE, TRUE, "FindReplace.xls", "Sheet2"); // Look for each match CXlRef xlrFind; while (finder.FindNext(xlrFind)) { // Inspect the current value CXlOper xloValue; finder.GetCurrentValue(xloValue); TRACE("%s\n", (LPCSTR)xloValue.ToString()); // Change the value in the matched cell finder.SetCurrentValue(apszPairs[i + 1]); } } return 0; }
Build the project, and start Excel.
Type the values "George" and "Fred" into several cells.
Using the Alt-F8 key (or with one of the other methods described in the last topic), run the FindReplace macro. Note that each of the Georges and Freds turn to their feminine equivalents.