1

我正在使用 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"

单元格地址 = "$A$1"

有谁知道为什么会这样?

4

1 回答 1

2

这是因为这里的索引:

Cells[0]

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

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

您实际上会因为尝试访问不存在的行而获得异常。您甚至可以使用负索引来访问更靠前的行。

于 2013-05-11T16:50:00.990 回答