ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Declaring as Object rather than Excel.Worksheet (https://www.excelbanter.com/excel-programming/286960-declaring-object-rather-than-excel-worksheet.html)

R Avery

Declaring as Object rather than Excel.Worksheet
 
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

Declaring as Object rather than Excel.Worksheet
 
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


"R Avery" wrote in message
...
| 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!
|
|



mudraker[_69_]

Declaring as Object rather than Excel.Worksheet
 
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


---
Message posted from http://www.ExcelForum.com/


Dick Kusleika[_3_]

Declaring as Object rather than Excel.Worksheet
 
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.

--
Dick Kusleika
MVP - Excel
www.dicks-clicks.com
Post all replies to the newsgroup.

"R Avery" wrote in message
...
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!






All times are GMT +1. The time now is 12:13 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com