Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 510
Default Excel200: Strange behaviour for Name when referred from VBA

Hi

In my VBA I rever to various names (the ones returning a value) in my
workbook, like:
Var1=[Name1]
It works nicely, except when the name definition contains function ROW()
(maybe there are other behaving similarily - I myself suspect COLUMN()).

The problematic name is something like:
HeaderCnt=ROW(SheetName!$A$2)
(It's needed to adjust automatically formulas and procedures, when some rows
are added to/removed from table header)
VarHeaderCnt=[HeaderCnt]
returns an 1-dimension object instead of value. To get the value, I have to
use the code:
VarHeaderCnt=[HeaderCnt]
VarHeaderCnt=VarHeaderCnt(1)

(NB! [HeaderCnt](1) doesn't work - it returns an error 'Wrong number of
arguments or invalid property assignment'.)

Can someone explain me this? Thanks in advance!

--
Arvi Laanemets
(When sending e-mail, use address arvil<Attarkon.ee)


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Excel200: Strange behaviour for Name when referred from VBA

Hi Arvi,

I think ROW() always returns an array because it "returns an array if
entered as a vertical array formula".
And EVALUATE (including the [] syntax) always evaluates formulae as array
formulae whenever it can.

BTW Name Manager evaluates your NAME as 1 col 1 row containing 2

regards
Charles
______________________
Decision Models
The Excel Calculation Site.
www.DecisionModels.com


In my VBA I rever to various names (the ones returning a value) in my
workbook, like:
Var1=[Name1]
It works nicely, except when the name definition contains function ROW()
(maybe there are other behaving similarily - I myself suspect COLUMN()).

The problematic name is something like:
HeaderCnt=ROW(SheetName!$A$2)
(It's needed to adjust automatically formulas and procedures, when some

rows
are added to/removed from table header)
VarHeaderCnt=[HeaderCnt]
returns an 1-dimension object instead of value. To get the value, I have

to
use the code:
VarHeaderCnt=[HeaderCnt]
VarHeaderCnt=VarHeaderCnt(1)



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 510
Default Excel200: Strange behaviour for Name when referred from VBA

Hi


"Charles Williams" wrote in message
...
Hi Arvi,

I think ROW() always returns an array because it "returns an array if
entered as a vertical array formula".
And EVALUATE (including the [] syntax) always evaluates formulae as array
formulae whenever it can.

BTW Name Manager evaluates your NAME as 1 col 1 row containing 2


Thanks for reply!

But is there a better way to get the value, instead of my 2-step approach?

Btw. this ROW's behaves strangely anyway. At start I used it in a complex
formula (=Expr1+Expr2), which also returned the range. I found out, that the
problem was in ROW(), when divided the complex name into 2 different names -
after that the one returned a value, the second (HeaderCnt) a range. It
looks a bit strange to me, that a value (number) added to a range is
returning a range!


--
Arvi Laanemets
(When sending e-mail, use address arvil<Attarkon.ee)


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 968
Default Excel200: Strange behaviour for Name when referred from VBA

Evaluate uses excel's formula evaluator to return one of
- an error value
- a scalar value
- a row of values
- a column of values
- an array of values
- a range

What it returns depends on what the input was (formula, row/col/rectangular
array of values, range, name etc)
Usually I just assign the result to a variant and work from the the
default property of Range is value anyway so that simplifies things.

Charles
______________________
Decision Models
The Excel Calculation Site.
www.DecisionModels.com


"Arvi Laanemets" wrote in message
...
Hi


"Charles Williams" wrote in message
...
Hi Arvi,

I think ROW() always returns an array because it "returns an array if
entered as a vertical array formula".
And EVALUATE (including the [] syntax) always evaluates formulae as

array
formulae whenever it can.

BTW Name Manager evaluates your NAME as 1 col 1 row containing 2


Thanks for reply!

But is there a better way to get the value, instead of my 2-step approach?

Btw. this ROW's behaves strangely anyway. At start I used it in a complex
formula (=Expr1+Expr2), which also returned the range. I found out, that

the
problem was in ROW(), when divided the complex name into 2 different

names -
after that the one returned a value, the second (HeaderCnt) a range. It
looks a bit strange to me, that a value (number) added to a range is
returning a range!


--
Arvi Laanemets
(When sending e-mail, use address arvil<Attarkon.ee)




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Shortcut key strange behaviour BB programmer Excel Worksheet Functions 1 October 12th 06 12:53 AM
Strange if(***) behaviour? Excel 2003 - SPB Excel Discussion (Misc queries) 6 August 6th 06 05:34 PM
Strange behaviour Edgar Thoemmes Excel Worksheet Functions 1 February 8th 05 03:20 PM
Strange behaviour in VBA Help Michael Singmin Excel Programming 4 June 4th 04 07:06 PM
strange behaviour Patrick Molloy Excel Programming 0 September 4th 03 07:51 AM


All times are GMT +1. The time now is 09:01 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"