Be explicit
I’ve already mentioned that .NET
doesn’t support VBA’s concept of a default property. If you are going to set the value of an object, you must use the Value property (or its equivalent).
Being explicit also applies to object references. It is much easier to program in .NET if you are using a specific object type, such as Worksheet, rather than the generic Object type. Using the specific object enables the Intellisense and Auto Complete features of .NET and helps detect inadvertent errors, such as incorrect variable assignments.
In many cases, Excel methods return generic object types that should be converted to the expected, more specific type. Use CType to perform this conversion, but be sure to check if the object can be converted before performing the conversion. For example, the following code checks if the passed-in argument Sh is a Worksheet before performing the conversion:
Private Sub ThisWorkbook_SheetActivate(ByVal Sh As Object) _
Handles ThisWorkbook.SheetActivate
If Sh.Type = Excel.XlSheetType.xlWorksheet Then _
ActiveWorksheet = CType(Sh, Excel.Worksheet)
End SubTrying to convert an object to an incompatible type causes a runtime error.
In .NET, everything is an object. Even simple types like strings and integers are their own classes derived from .NET’s base object type. At first, this might seem cumbersome, but the consistency and logic of this approach pay huge dividends.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access