Thread: Simple VBA
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
AB[_2_] AB[_2_] is offline
external usenet poster
 
Posts: 236
Default Simple VBA

You might be on a bit misleading path there.

I could be wrong, but i don't think that executible functions (that one can
enter into a cell and it would alter constants in other cells) are supported
anymore in Excel (i think there once were some 'call' type functions but
they were a security threat), i.e., if you need the vba to perform some
actions, you need to use Sub instead of a function, something like this:

Sub IncomeTax(Income as Double)'<------ you still need to pass the variable
of Income

dim myResultRange as range

set myResultRange = activesheet.Range("A1")' <------ the cell you want
the result to show up.

ActiveWorkbook.Sheets("Income_Tax").Range("A1").Va lue = Income

myResultRange.value =
ActiveWorkbook.Sheets("Income_Tax").Range("B1").Va lue

End sub

And then you'd need to call the macro from macro windonw (Alt+F8).

Even though i put the (untested) code above - it would seem that you'd be
better off by figuring out how to do that with ordinary Excel functions
(lookkups, indexes etc.) rather than a vba.

If you insist of using VBA then you would need to provide the Tax
calculation logic within your vba function (and not on a ws) and calculate
it solely within the vba function rather than trying to put a value onto
another sheet and then grab the output and put it back somewhere.

"Tony" wrote in message
...
Hello - I'm trying to write a simple VBA function to calc Income Tax given
a value for income. I have several worksheets in my workbook. From sheet
1 I want to set a value in the Income_Tax sheet, have it do the calc, then
return the results. Here's what I got:

Function IncomeTax(Income As Double) As Double

ActiveWorkbook.Sheets("Income_Tax").Range("A1").Va lue = Income

ActiveWorkbook.Sheets("Income_Tax").Range("B1").Ca lculate

IncomeTax = ActiveWorkbook.Sheets("Income_Tax").Range("B1").Va lue

End Function

But when I try to use that function in sheet 1, I get a #Value! error.
What's wrong with this code?

Thanks for your help.
--
Tony