Figure 1. The New Name dialog box.
=NOT(GET.CELL(48,INDIRECT("rc",FALSE)))
=CellHasNoFormulaThe formula returns True or False, depending on whether there is a formula in the cell or nor. If there is no formula, then True is returned and whatever format you specify is applied to the cell. Another approach is to use a user-defined function to return True or False, and then set up the conditional format. You could use a very simple macro, such as the following:
Function IsFormula(Check_Cell As Range) As Boolean Application.Volatile IsFormula = Check_Cell.HasFormula End FunctionYou can then specify the conditional formatting rule type as Use a Formula to Determine which Cells to Format and enter the following formula in the condition if, for instance, you are conditionally formatting cell C1:
=NOT(IsFormula(C1))The formula returns True if there is no formula in the cell, so the conditional format is applied. The only downside of using any of these formulas to determine if a formula is in the cell is that it cannot determine if the formula in the cell has been replaced with a different formula. This applies to both the macro approach and the defined formula approach. A totally different approach is to rethink your worksheet a bit. You can separate cells for user input from those that use the formulas. The formula could use an IF function to see if the user entered something in the user input cell. If not, your formula would be used to determine a value; if so, then the user's input is used in preference to your formula. This approach allows you to keep the formulas you need, without them being overwritten by the user. This results in great integrity of the formulas and the worksheet results.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (9270) applies to Microsoft Excel 2007, 2010, and 2013. You can find a version of this tip for the older menu interface of Excel here: Highlighting Values in a Cell.
Create Custom Apps with VBA! Discover how to extend the capabilities of Office 2013 (Word, Excel, PowerPoint, Outlook, and Access) with VBA programming, using it for writing macros, automating Office applications, and creating custom applications. Check out Mastering VBA for Office 2013 today!
When your macro checks the formatting used for a cell, it needs to be careful that the type of formatting being checked ...
Discover MoreIf you work with geographic data, you may need a way to display latitude and longitude in a worksheet. This tip examines ...
Discover MoreProfessional typesetting has, in many ways, spoiled us. One way this is evident is in the preference we show for making ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2014-10-22 09:47:46
@Andy
I had never seen Get.Cell before, nor had I seen using "rc" for current cell in an Indirect().
A little research shows Get.Cell is a holdover from Excel4 Macros. There are references on-line that will tell you what other constants give different results. Just search for "Get.Cell".
To get the value of the cell use "5". Warning on that is it returns "0" when the cell is blank, similar to what happens with VLOOKUP().
Oddly, "Get.Cell" cannot be used in a cell formula nor can I find a way to use it in VBA code. The only place I can see an ability to use it is in a Name. It looks like that is why Allen put it into the Name before using it in a Conditional Format formula.
As to using the "rc" in the Indirect(), I did a little experimentation with that.
* "rc" does return the current cell
* Putting a number after "r" or "c" uses the absolute row or column number. So if you wanted to look in Column A of the same row it would read "rc1".
* Putting that number in square brackets, i.e. "[]", gives the relative address. If you wanted to compare the value of the Column A in the current row with Column A of the previous row then the formula would be "=Indirect("rc1",False)=Indirect("r[-1]c1",False)" without the quotes. (I use this type of comparison to set the font color equal to the background color when there is redundant information. It makes spreadsheets much more readable as reports.)
2014-10-20 06:27:00
Barry
Excel will also treat a cell entry of "=27" (without the parentheses) as a formula because of the equals sign.
2014-10-19 23:49:28
Andy R
Thanks for the tip. I have been scratching my head to understand exactly how this works as I think it could have many uses.
=NOT(GET.CELL(48,INDIRECT("rc",FALSE)))
Can you confirm:
1 - How you know that "48" means a Constant?
2 - I assume since you chose the "not" path, there isn't a variable that tells you the value in the cell is a formula?
This is the first time I've seen "rc" as part of an Indirect. It got me thinking about its use irrespective of the use above.
3 - I assume this essentially means "current cell"?
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2019 Sharon Parq Associates, Inc.
Comments