2013-05-10 13 views
1

Я занимаюсь разработкой плагина VSTO для Excel 2013 с помощью средств разработки Управления по Visual Studio 2012, выпущенного в ноябре 2012 годаRange.address не соответствует range.cell [0] адрес

У меня есть ссылка на таблицу и я пытаюсь получить доступ к значению ячеек в пределах диапазона. Это должна быть простая задача, но по какой-то причине ячейка, к которой я пытаюсь получить доступ, на самом деле является одной строкой выше диапазона. Я не уверен, что вызывает это, или если я собираюсь сделать это неправильно. Следующий простой пример объясняет поведение, которое я вижу.

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"

Кто-нибудь знает, почему это происходит?

ответ

2

Это из-за индекса здесь:

Cells[0] 

При обращении строк и столбцов в Excel индексы начинаются с 1. Поэтому 0 на самом деле идет в одну строку вверх. Если вы сделали бы:

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

Вы действительно получите исключение для попытки доступа к не существующей строке. Вы можете даже использовать отрицательные индексы для доступа к строкам, которые находятся дальше.

Смежные вопросы