Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение размера выделенного диапазона в Excel / 4 сообщений из 4, страница 1 из 1
02.07.2003, 11:34
    #32197024
Ильшат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение размера выделенного диапазона в Excel
Кто знает как получить размеры выделенного диапазона в Excel?

В хелпе экселя описана функция Address, без параметров она возвращает , что-то типа $A$1:$W$23.
Чтобы возвращалось в виде RC:R[22]C[22], надо указать параметры в виде

Код: plaintext
1.
для VBA
ActiveWindow.RangeSelection.Address(False, False, xlR1C1, Nothing, Nothing)


а как сделать это в дельфи. Следующая конструкция не работает:
Код: plaintext
1.
2.
3.
4.
5.
var
  Excel: Variant;
...
Excel := CreateOleObject( 'Excel.Application');
...
Excel.ActiveWindow.RangeSelection.Address( False, False, xlR1C1, Null, Null)

возникает ошибка "Член группы не найден". Если убрать параметры, то вернет диапазон в формате "$А$1", а мне надо в формате "R1C1"
...
Рейтинг: 0 / 0
02.07.2003, 19:41
    #32197781
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение размера выделенного диапазона в Excel
Вроде так -
Excel.Selection.Adress( False, False, xlR1C1, Null, Null)
======
Сейчас проверить не могу - как-то умудрился завалить на Win XP VBA. А переставлять лень.
...
Рейтинг: 0 / 0
03.07.2003, 02:39
    #32197874
Dikobrazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение размера выделенного диапазона в Excel
Попробуй вместо Null писать EmptyParam, или вообще два последних параметра не указывать
...
Рейтинг: 0 / 0
03.07.2003, 15:30
    #32198610
Ильшат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение размера выделенного диапазона в Excel
2 олл
Пробовал.. Не помогает. \
Сейчас делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  var
    Columns, Rows   : Integer;
    Code            : string;

    function A1ToIndex( A1Style: string): Integer;
    var
      i             : Integer;
    begin
      Result :=  0 ;
      for i :=  1  to Length( A1Style) do
        Result := Result + ( Ord( A1Style[ i]) - $ 40 ) +
          ( Ord( 'Z') - Ord( 'A') +  1 ) * ( i -  1 );
    end;

  begin
    Code := Copy( Address,  2 , Pos( ':', Address) -  2 );
    Columns := A1ToIndex( Copy( Code,  1 , Pos( '$', Code) -  1 ));
    Rows := StrToInt( Copy( Code, Pos( '$', Code) +  1 , Length( Code)));

    Code := Copy( Address, Pos( ':', Address) +  2 , Length( Address));
    Columns := A1ToIndex( Copy( Code,  1 , Pos( '$', Code) -  1 )) - Columns +  1 ;
    Rows := StrToInt( Copy( Code, Pos( '$', Code) +  1 , Length( Code))) -
      Rows +  1 ;


Разбор строки, в общем...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение размера выделенного диапазона в Excel / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]