Declaring as Object rather than Excel.Worksheet

  • Thread starter Thread starter R Avery
  • Start date Start date
R

R Avery

Why would anyone prefer declaring a variable as object rather than
explicitly declaring what type of object it is (assuming it will always be
the same in the end)?

For example, in workbook events, why is it "ByVal Sh As Object" rather than
"ByVal Sh As Excel.Worksheet"?

Is it a problem with maintaining references, or...???

Thanks!
 
Hi,
Yes, maintaining references.
If you use the "ByVal Sh As Excel.Worksheet" method (early binding) you have
to set a reference to Excel and therefore a specific version of Excel. Which
should work with equal or a higher version number on the users machine.

"ByVal Sh As Object" dynamically creates an Excel object if it is installed
on the users machine, and is known as late binding. Late binding can have
problems also. If you use a command that didn't exist in previous versions
it will error.

You can also programmatically create a reference to whatever version is
installed on the users machine, (with lots of error checking) and get the
best of both methods.
If you do a google search you should find some examples of programmatically
creating a reference.

--
John
johnf 202 at hotmail dot com


| Why would anyone prefer declaring a variable as object rather than
| explicitly declaring what type of object it is (assuming it will always be
| the same in the end)?
|
| For example, in workbook events, why is it "ByVal Sh As Object" rather
than
| "ByVal Sh As Excel.Worksheet"?
|
| Is it a problem with maintaining references, or...???
|
| Thanks!
|
|
 
Jaf

I had a problem last year where I declared wsMenu as Worksheet

When I tried to set a variable based on a option button value I was
getting an error. To overcome this I had to declare wsMenu as Object -
Early binding as against late binding
 
R

The reason that it is declared as Object in the events is that Sh can refer
to more than one kind of object. Sh can refer to a Worksheet or a
ChartSheet (and probably to an xl4 macro sheet), so they have to declare the
variable as the generic object so that the event works for worksheets and
charts.

There is no Sheet object, so they can't use that. But there is a Sheets
collection object which contains all the different kinds of sheets.
 
Back
Top