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).

```
ActiveCell.Value="=If(True,""yes"",""no"")"
```

and

```
ActiveCell.Formula="=If(True,""yes"",""no"")"
```

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:

`Range.Formula`

Range.Formula Property for Excel 2013 (Excel 2003 did not have a page for this Property)

`Range.Value`

Property for Excel 2003 (Expand the “Value property as it applies to the Range object.” heading

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 `Range.Value`

.

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. 🙂

### Answer：

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).