为什么我必须转换Excel.Cells而不是Excel.End?

时间:2014-08-02 12:50:41

标签: vb.net excel interop

我从MSDN获得了以下代码段。我很好奇:为什么我必须将rng.Cells Object投射到Excel.Range中,为什么我不必将rng.End Object投射到Excel.Range。由于离开Directcast会给我一个错误,即Option Strict On不允许从Object到Excel.Range的隐式转换。所以我检查了MSDN Range.End Property,它说返回类型是一个Range对象,这就是为什么我不必将该类型转换为Excel.Range。但是看Range.Cells Property我很困惑,因为它说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

1 个答案:

答案 0 :(得分:2)

您需要转换为Range,因为重载 Cells(Object, Object)的返回类型为Object

想象一下:

Public ReadOnly Property Cells() As Excel.Range

Public ReadOnly Property Cells(rowIndex As Object, columnIndex As Object) As Object

Visual studio