View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
joeu2004[_2_] joeu2004[_2_] is offline
external usenet poster
 
Posts: 829
Default writing a value to a particular cell from function

Clarification.... I wrote:
"Spint" wrote:
is there any way i can return a value from the function
and also inside the function some calculated value to be
set to particular cell.


No, not in a VBA function per se. You could do that in a VBA
sub(routine), but not one that is invoked by an Excel calculation
(through a VBA function) directly or indirectly.

Generally, Excel does not permit a VBA function to change the
state of Excel worksheets directly or indirectly.


I might not have said it clearly. I always have trouble explaining this.
It is __not__ as simple as "you cannot do this in a function" or "you can to
this only in a sub(routine)". It depends on the context in which the code
is executed.

Let me try again....

Generally, you cannot change Excel state -- for example, by changing the
value of a cell directly -- in VBA code when it is invoked from an Excel
formula directly or indirectly. It does not matter whether that VBA code is
in a function or sub(routine).

Conversely, you can change Excel state in VBA code that is not invoked from
an Excel formula directly or indirectly; for example, by executing a macro.

Consider the following example....

Function myFunc()
Call sub1
myFunc = 123
End Function

Sub mySub()
Call sub1
End Sub

Sub sub1()
Range("A1") = func1()
End Sub

Function func1()
Range("B1") = 456
func1 = 789
End Function

We get an error when we invoke sub1 and func1 indirectly using the Excel
formula =myFunc().

But there is no error when we invoke sub1 and func1 indirectly by executing
the macro mySub directly, for example by pressing alt+F8 in Excel.