Range.address与range.cell 地址不匹配
我正在使用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”
有谁知道这是为什么发生?
这是因为在这里索引:
Cells[0]
在excel中访问行和列时,索引从1开始。所以0实际上是一行。 如果你愿意:
var cellAddress = dataEntrySheet.Range["A1"].Cells[0].Address
你实际上会得到一个exception,试图访问一个不存在的行。 您甚至可以使用负面索引来访问更进一步的行。