Как сгруппировать несколько объектов Shape на листе?
// Сгруппируем все объекты Shapes на листе
AShape := (ASheet.DrawingObjects(EmptyParam, lcid) as DrawingObjects).ShapeRange.Group; AShape.Name := 'MyGroup1';
// группировка через вариантный массив
V := VarArrayCreate([1, 2], varVariant); // !!!
// сгруппируем 2-й и 4-й Shape
V[1] := 2; V[2] := 4; AShape := ASheet.Shapes.Range[V].Group; AShape.Name := 'MyGroup2';
// Если заранее известно, какие Shape будут сгруппированы,
// то можно и так
AShape := ASheet.Shapes.Range[VarArrayOf([2, 4])].Group; AShape.Name := 'MyGroup3';
// Теперь, на закуску, через Selection
// Выберем 2-й, 3-й и 4-й Shape
ASheet.Shapes.Item(2).Select(True); ASheet.Shapes.Item(3).Select(False); ASheet.Shapes.Item(4).Select(False); // сгруппируем выделенные Shape
AShape := (XL.Selection[lcid] as DrawingObjects).ShapeRange.Group; AShape.Name := 'MyGroup4';
// Разгруппировать
AShape.Ungroup;
Заметьте, что после того, как объекты Shape были сгруппированы, их количество на листе (Shapes.Count) уменьшится. После "группировки" можно обратиться к отдельному Shape, включенному в группу, используя коллекцию GroupItems объекта Shape, полученного в результате группировки.
Group Method
Regroup Method
Ungroup Method
GroupItems Property