Пытаясь заменить Cells (RowIndex, ColumnIndex) .Value () вызовами по строчным ссылкам для производительности, я постоянно не могу ссылаться на результат.
Начиная с Excel Interop - Эффективность и производительность, который содержит подсказку для использования get_range
, то есть
//get values
object[,] objectArray = shtName.get_Range("A1:Z100").Value2;
iFace = Convert.ToInt32(objectArray[1,1]);
//set values
object[,] objectArray = new object[3,1] {{"A"}{"B"}{"C"}};
rngName.Value2 = objectArray;
Я подумал, что не могу использовать get_Range
, так как этот метод не вызывается для меня, говорит VB во время выполнения (невидимый член).
Теперь я придумал что-то вроде:
Dim Values As Object(,)
Values = Sheet.Range(Sheet.Cells(RowIndex, 1), Sheet.Cells(2, 17)).Value2
For Index As Integer = 0 To 16
MsgBox(Values(0, Index))
Next
Однако ссылка на Values
с двумя индексами измерения всегда возвращает «индекс был вне границ массива»исключение.Проверка массива с помощью отладчика показывает хороший двумерный массив, который должен иметь 17 элементов во втором измерении, поэтому Value (0,0)
действительно должен быть допустимой ссылкой, но это не так:
Отладчик позволяетя могу проверить значение, я также могу перейти к Value(0,0)
и увидеть правильное значение, но переоценивая только этот элемент, то есть проверка "Value (0,0)
" возвращает сообщение выше.
Как я могуссылка, что возвращает мой вызов Value2?