2012-03-14 9 views
2

В в Excel COM API:Получение координат объекта ExcelRange

Дано ExcelRange объект, как бы я определить, какие строки и столбцы, содержащиеся в нем?

Я не хочу содержать содержание диапазона, только «координаты» диапазона, предпочтительно как целые числа.

Я заметил, что ExcelRange имеет как , так и свойство Column, однако они указывают только строку и столбец в верхнем левом углу диапазона.

Примечание: Я использую Delphi, однако этот вопрос может иметь отношение к любому языку с использованием Excel, хотя COM, поэтому ответ с использованием Delphi не требуется.

ответ

4

Предполагая простой прямоугольный диапазон, вы используете объекты Rows и Columns объекта ExcelRange. Верхний левый от выбора определяется Range.Row и Range.Column. Количество выбранных строк и столбцов задается Range.Rows.Count и Range.Columns.Count.

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

Для иллюстрации рассмотрим следующий код:

procedure DescribeExcelRange(const Range: ExcelRange); 
var 
    AreaIndex: Integer; 
    Area: ExcelRange; 
begin 
    for AreaIndex := 1 to Range.Areas.Count do 
    begin 
    Area := Range.Areas[i]; 
    Writeln(Format(
     'Area %d: R%dC%d:R%dC%d', 
     [AreaIndex, Area.Row, Area.Column, 
     Area.Row+Area.Rows.Count-1, Area.Column+Area.Columns.Count-1] 
    )); 
    end; 
end; 

Я не тестировал этот код, так что я надеюсь, что я запомнила правильно, что индексация 1 на основе.

+0

Спасибо! Да, индексирование на основе 1 правильное. – kes

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