我正在使用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”
有谁知道为什么会这样?
答案 0 :(得分:2)
这是因为索引在这里:
Cells[0]
当访问excel中的行和列时,索引从1开始。所以0实际上是向上一行。如果你愿意的话:
var cellAddress = dataEntrySheet.Range["A1"].Cells[0].Address
实际上,您尝试访问非现有行时会遇到异常。您甚至可以使用负索引来访问更进一步的行。