为什么我必须投Excel.Cells但不Excel.End?

我从MSDN得到以下代码片段。 我很好奇:为什么我必须将rng.Cells Object转换为Excel.Range ,为什么我不必将rng.End Object转换为Excel.Range 。 由于离开Directcast给我的错误,虽然Option Strict On从Object到Excel.Range的隐式转换是不允许的。 所以我查了MSDN的Range.End属性 ,它说,返回types是一个Range对象,这就是为什么我不必将该types转换为Excel.Range 。 但看着Range.Cells属性我很困惑,因为它说, Range.Cells返回一个Excel.Range object 。 所以任何人都可以向我展示为什么我必须施放Range.Cells而不是Range.End

 Private Function GetDocPropRange() As Excel.Range Dim rng As Excel.Range = _ ThisApplication.Range("DocumentProperties") Dim rngStart As Excel.Range = _ DirectCast(rng.Cells(1, 1), Excel.Range) Dim rngEnd As Excel.Range = _ rng.End(Excel.XlDirection.xlDown).Offset(0, 1) Return ThisApplication.Range(rngStart, rngEnd) End Function 

您需要投射到Range因为重载 Cells(Object, Object)的返回types是Object

照这样描述:

 Public ReadOnly Property Cells() As Excel.Range Public ReadOnly Property Cells(rowIndex As Object, columnIndex As Object) As Object 

视觉工作室