Получить все координаты ячеек для Microsoft.Office.Interop.Excel.Range - PullRequest
1 голос
/ 31 января 2012

Есть ли какой-либо метод / свойство, которое я мог бы использовать для получения строкового массива выбранных элементов диапазона?

Например:
Диапазон $B$2:$C$3 мог бы получить строковый массив со следующими значениями:$B$2 $B$3 $C$2 $C$3

РЕДАКТИРОВАТЬ ::
Я нашел ответ на свой вопрос в этом сообщении.
На самом деле мне нужно использовать следующеепроцедура:

    foreach (Range c in myRange)
    {
        string changedCell = c.get_Address(
            Type.Missing, Type.Missing, 
            XlReferenceStyle.xlA1, 
            Type.Missing, Type.Missing
        );  
        MessageBox.Show("Address:" + changedCell + " Value: " + c.Value2);
    }

Ответы [ 2 ]

1 голос
/ 31 января 2012

AFAIK, нет свойства, которое может дать адреса ячеек заданного диапазона в ожидаемом формате.

Вот код VBA, чтобы получить то, что вы ищете

Function GetCellAddresses(ByVal srcRange As Range) As Variant
Dim cellAddresses As Variant

Dim cellCtr As Long
Dim cellCount As Long

Dim cell As Range

If Not srcRange Is Nothing Then
    cellCtr = 1
    cellCount = srcRange.Cells.Count
    ReDim cellAddresses(1 To cellCount)

    For Each cell In srcRange.Cells
        cellAddresses(cellCtr) = cell.Address
        cellCtr = cellCtr + 1
    Next
End If

GetCellAddresses = cellAddresses
End Function

Чтобы позвонить выше, GetCellAddresses(sheet1.Range("A1:B3"))

РЕДАКТИРОВАТЬ: Используя LINQ, это может стать 1 или 2 лайнера.
Например, var cellAddresses = srcRange.Select(c => c.Address);

ИЛИ

from cell in srcRange select cell.Address

0 голосов
/ 31 января 2012

Существует не просто метод, чтобы сделать все за вас, и дать вам массив. Вот процедура, которую вы должны выполнить: создайте пустой массив, создайте цикл for для каждого столбца, начиная со столбца первой ячейки, пока не получитепоследние в вашем диапазоне в каждом столбце используют вложенный цикл. Итерируйте последний элемент столбца. Добавьте каждый элемент в ваш массив.

. Эта идея сработала

.
...