Range.address与range.cell [0]地址不匹配

时间:2013-05-10 19:46:49

标签: c# excel vsto office-interop officedev

我正在使用2012年11月发布的Visual Studio 2012 Office开发工具为Excel 2013开发VSTO插件。

我有一个工作表的引用,我试图访问范围内的单元格的值。这应该是一个简单的任务,但由于某种原因,我试图访问的单元格实际上比该范围高一行。我不确定是什么导致这种情况,或者我是否以错误的方式解决这个问题。以下简单示例解释了我看到的行为。

var dataEntrySheet = (Worksheet)Globals.ThisAddIn.Application.Worksheets["Data Entry"];
var rangeAddress = dataEntrySheet.Range["A2"].Address
var cellAddress = dataEntrySheet.Range["A2"].Cells[0].Address

以上结果是:

  

rangeAddress =“$ A $ 2”

     

cellAddress =“$ A $ 1”

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

这是因为索引在这里:

Cells[0]

当访问excel中的行和列时,索引从1开始。所以0实际上是向上一行。如果你愿意的话:

var cellAddress = dataEntrySheet.Range["A1"].Cells[0].Address

实际上,您尝试访问非现有行时会遇到异常。您甚至可以使用负索引来访问更进一步的行。