I was wondering why in VBA code for Excel 2003 do we even need to use
Range.Formula to write a formula to a cell instead of just using
Range.Cell? They both write Strings to the cell that become forumlas, and the formula works (from what I’ve tested).
do the same thing for me (when I select a cell and execute each of the above code segments separately in separate cells). They both show the “yes” value in the cell and the formula is stored when I click to view each cell.
I looked on Microsoft’s Dev Center for info:
I also googled “Why use Range.Formula instead of Range.Value VBA Excel” and couldn’t find anything that related to my question.
Some people said, use
Some others say use
Range.Formula on stack overflow (Sorry I lost the reference to the exact question…)
In terms of values of data:
Imagine you have integers, doubles for certain calculations and if you use .formula you gonna get screwed. Because
.FORMULA always return a String. (Any value set to .formula without is a plain value not a formula) Unless you have exception handling and the extras ready in your code. Whereas
.VALUE returns your data’s data type as you expect them to be.
In terms of retrieving formula:
Value is one way road in case to set formula but not to retrieve.
So you see these methods are introduced for a reason and help you to work with right properties you require. 🙂
This doesn’t apply so much when writing actual formulas to cells, but I find using
.Formula instead of
.Value when filling a range with values from a variant array containing multiple data types (especially non-US dates) gives much more reliable results.
I can’t remember the exact problem that led me to discover this as a workaround, as it was many moons ago; nor have I tested to find out what the actual differences are. I simply switched once I discovered the benefit and have been doing it this way ever since.
At a guess I would say that writing using the
.Formula property prevents Excel from attempting to automatically convert number formats for any cells in the target range which do not already have a number format set (and possibly even for those that do).