我从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
答案 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