Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > sheet.Range[].Select выдет ошибку


Автор: Boyur 2.6.2012, 02:24
Хочу выделить и объеденить ячейки, но мне Делфи говорит что такое Select и Merge.
Пишет ошибку Undeclared identifier "Select'
Вот так объеденяю:
Код

//выделение диапазона ячеек
                  sheet.Range[sheet.cells[24,18],sheet.cells[25,21]].Select;
                  //объеденение ячеек
                  sheet.Range[sheet.cells[24,18],sheet.cells[25,21]].Merge;


Вот так создаю документ:
Код

function CreateApplication(FileName:string):boolean;
//создаем приложение excel
begin
try
    //Создаем объект интерфейса для доступа к серверу COM
    exl := CreateOleObject('Excel.Application');
    // Отключаем реакцию Excel на события,
    //чтобы ускорить вывод информации
    exl.Application.EnableEvents := false;
    //Создаем книгу и обращаемся к первому листу
    Workbook := exl.Application.WorkBooks.Add(GetCurrentDir()+FileName);
    Sheet := WorkBook.WorkSheets[1];
    result:=true;
Except
showmessage('Внимание! Произошла ошибка при создании MS Excel приложения');
result:=false;
//освобождаем интерфейсы
Sheet := Unassigned;
WorkBook := Unassigned;
exl := Unassigned;
end;
end;


Приложил приложение в котором пытаюсь распечатать. 

Автор: Данкинг 2.6.2012, 03:56
Цитата(Boyur @  2.6.2012,  03:24 Найти цитируемый пост)
sheet.Range[sheet.cells[24,18],sheet.cells[25,21]]

А это что за конструкция такая? Посмотри макросом, как сам Excel выделяет. Там всё проще как-то.

Автор: kami 30.7.2012, 18:01
1. Select при работе с Excel не нужен и даже вреден. Исключение - показ пользователю нужной ячейки по окончанию обработки данных. 
2. Цитата из рабочего кода:
Код

var
  Range: variant;
begin
  ...
  Range:=Sheet.Range['X18:Y21'];
  Range.Merge;
  Range.HorizontalAlignment := xlAlignHCenter;
  Range.VerticalAlignment := xlAlignVCenter;
  Range.WrapText := True;
  ... и так далее
end;


Добавлено через 13 минут и 8 секунд
Цитата(Данкинг @  2.6.2012,  03:56 Найти цитируемый пост)
А это что за конструкция такая? 

Конструкция вроде правильная, справка VBA такое позволяет:
Код

With Worksheets(1)
    .Range(.Cells(1, 1), _
        .Cells(10, 10)).Borders.LineStyle = xlThick
End With

Другое дело, что там голову сломать можно, когда ставить круглые, а когда квадратные скобки, так что вполне возможно, что в данном случае для указания диапазона по крайним ячейкам нужно сделать так:
Код

sheet.Range(sheet.cells[24,18],sheet.cells[25,21])


Кстати, если кто просветит насчет "круглые/квадратные скобки" применительно к Excel - будет здоровски.

Автор: kami 30.7.2012, 18:21
ой-е 
Цитата
Дата 2.6.2012
, главное вовремя отписаться  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)