Вырезание, вставка и удаление ячейки

   
На этом шаге мы рассмотрим основные операции над ячейками.

   
На прошлых шагах мы рассмотрели только манипуляции с содержимым ячеек, при этом сами ячейки оставались
неизменными, т. е. их другие характеристики не менялись. Если бы ячейка имела заливку и линии границы, то
изменение или даже полная очистка ее содержимого не повлияла бы на ее другие визуальные характеристики - они
остались бы неизменными. Радикальный способ, позволяющий полностью изменить ячейку по определенному адресу,
- это удаление ячейки или вставка на ее место другой. При этой манипуляции происходит смещение остальных ячеек
к началу или к концу в зависимости от выбранной операции над ячейками. Для удаления ячейки предназначен метод
Delete объекта Range, а для вставки - метод Insert объекта Range. Оба метода могут
быть вызваны с аргументом. При удалении аргумент метода Delete определяет, какая ячейка из столбца или
строки будет замещать удаленную ячейку. При вставке новой ячейки аргумент метода Insert определяет, какие
ячейки будут сдвинуты - ячейки прилегающего столбца или строки. Методы Delete и Insert можно
применять не только к отдельным ячейкам, но и к группе ячеек, а также к строкам и столбцам ячеек.

   
Рассмотрим, как используются эти методы в приложениях Delphi. Пусть имеется лист рабочей
книги Ecxel, в ячейках которого записаны некоторые числовые константы. Требуется вставить новые
четыре ячейки в область А1:В2. Используем метод Insert без аргументов. По умолчанию, при вставке
ячеек сдвигаются ячейки, расположенные ниже вставляемой области. Используем следующую процедуру.

procedure TForm1.Button4Click(Sender: TObject);
//Вставка ячеек в область A1:B2
begin
  E.Application.Range['A1:B2'].Insert;
end;

   
Если задать адрес объекта Range в виде строки 'А1:В2', то мы получим результат, показанный на
рисунке 1.


Рис.1. Результат работы приложения

   
Как видно из этого рисунка, ячейки области А1:В2 были смещены вниз на две строки, а на их место вставлены
новые, пустые. Если до вызова метода Insert был вызван метод Сору, или буфер обмена уже содержал
скопированную ранее информацию (т. е. в буфере уже находились ячейки), то их содержимое будет вставлено в область
А1:В2 на место смещенных ячеек.

   
Вот полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel и отображение окна
begin
  E:=CreateOleObject('Excel.Application');
  E.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги
begin
  E.WorkBooks.Add;
end;


procedure TForm1.Button3Click(Sender: TObject);
//Заполним 1-ю строку и 3-й столбец
begin
  E.ActiveSheet.Rows[1].Value:='123';
  E.ActiveSheet.Columns[3].Value:='123';
end;

procedure TForm1.Button4Click(Sender: TObject);
//Вставка ячеек в область A1:B2
begin
  E.Application.Range['A1:B2'].Insert;
end;

end.

Текст этого приложения можно взять здесь (5,8 Кб).

   
В заключение отметим, что единственный необязательный параметр метода Delete может принимать
следующие значения:

  • xlShiftToLeft (-4159) - на место удаляемых ячеек будут помещены ячейки справа;
  • xlShiftUp (-4162) - на место ядаляемых ячеек будут помещены ячейки снизу.

   
Если параметр не указан, то его значение считается равным xlShiftToLeft.

   
Аналогично, для метода Insert первый необязательный параметр может принимать следующие значения:

  • xlShiftToRight (-4161) - ячейки, находящиеся на месте вставляемых, будут перемещены влево;
  • xlShiftDown (-4121) - ячейки, находящиеся на месте вставляемых, будут перемещены вниз.

   
Если параметр не указан, то его значение считается равным xlShiftDown.

   
На следующем шаге мы рассмотрим поиск и земену текста.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий