View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Rob van Gelder[_4_] Rob van Gelder[_4_] is offline
external usenet poster
 
Posts: 1,236
Default use of "formula"

Range("c1") = Range("a1") * Range("b1") '----ok
Uses default property .value - ok

range("c1").Formula="=range("a1")*range("b1")"----results in syntax error

You're embedding Range within a string, but not that well because " within a
string should be ""

Range("c1").Formula = "=$A$1*$B$1" - -------ok

Standard formula write - ok

Range("c1").Formula = "=cells(1,1)*cells(1,2)"---returns#NAME#


It's looking at Cells( and expects that to be a function that Excel
understands.
Any time you attempt to use a function that Excel doesn't know about, it
returns #NAME

Range("c1").Formula = "=cells(0,[-1])*cells(0,[-2])"---appln defined

square brackets mean something special, like a sheet name if I recall - it
wont find a sheet named -1 or -2

Range("c1").FormulaR1C1 = "=rc1*rc2" - --------ok

Standard formula write - ok

ActiveCell = ActiveCell.Offset(0, -2) * ActiveCell.Offset(0, -1) - ---ok

I'm surprised this works. I thought the syntax was Set ActiveCell =
ActiveCell ....
Probably what's happening is a local variable called ActiveCell is being
defined for storing result of your equation. (0, -2) * (0, -1)
I doubt this is working as you expect.
Try placing Option Explicit at the top of your code and re-run it.

ActiveCell.Formula = "=ActiveCell.Offset(0, -2) *
ActiveCell.Offset(0, -1)"--returns #NAME#


Same issue with #NAME as above.
Excel is looking for a function called ActiveCell.Offset( and doesn't find
it.


You seem to be confused where VBA stops and Excel starts.

..Formula is a property, not a Method

When you try to write to the Formula property, write a string.
So your goal should be to compile a string.

Examples:
ActiveCell.Formula = "=" & ActiveCell.Offset(0, -2).Address & " * " &
ActiveCell.Offset(0, -1).Address

Range("c1").Formula = "=" & Cells(0, -1).Address & " * " &
Cells(0, -2).Address

Range("c1").Formula = "=" & Range("a1").Address(False, False) & "*" &
Range("b1").Address(False, False)


--
Rob van Gelder - http://www.vangelder.co.nz/excel


"R.VENKATARAMAN" &&& wrote in message
...
I am bit confused while using the method "formula"

please see the code statements and result in running each of the code
independently
===============
Range("c1") = Range("a1") * Range("b1") '----ok
range("c1").Formula="=range("a1")*range("b1")"----results in syntax error
exected end of statement at a1
Range("c1").Formula = "=$A$1*$B$1" - -------ok
Range("c1").Formula = "=cells(1,1)*cells(1,2)"---returns#NAME#
Range("c1").Formula = "=cells(0,[-1])*cells(0,[-2])"---appln defined
orobject defined error
Range("c1").FormulaR1C1 = "=rc1*rc2" - --------ok
ActiveCell = ActiveCell.Offset(0, -2) * ActiveCell.Offset(0, -1) - ---ok
ActiveCell.Formula = "=ActiveCell.Offset(0, -2) *
ActiveCell.Offset(0, -1)"--returns #NAME#
===============

request for some logical ideas in using "formula"