Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Excel   Найти похожие ветки 

 
N   (2004-03-17 06:44) [0]

Здравствуйте, помогите кто как может.

Не получается выделить блок ячеек в Excel, разлиновать,
потом, конечно снять выделение.
Заранее, спасибо,


 
KSergey ©   (2004-03-17 07:06) [1]

Работаем через OLE? Тогда примерно так (извиняюсь за длинноватый примерчик, вырезать лень)

 procedure SetDataFormat;
 var Sel: Variant;
     i: Integer;
 begin
   if r <= rDataStart then Exit;  // данных не перенесено
     // выравнивание текста
   if AAlignments <> nil then
     for i := 1 to cMax do
     begin  // в r-1 записан номер последней строки с данными
       Worksheet.Range[Cells.Item[rDataStart,i], Cells.Item[r-1,i]].Select;
       Sel := MSExcel.Selection;
       case AAlignments[i-1] of
         taLeftJustify:  Sel.HorizontalAlignment := xlLeft;
         taRightJustify: Sel.HorizontalAlignment := xlRight;
         taCenter:       Sel.HorizontalAlignment := xlCenter;
       end;
     end;
     // бордюр ячеек
   Worksheet.Range[Cells.Item[rDataStart,1], Cells.Item[r-1,cMax]].Select;
   Sel := MSExcel.Selection;
   Sel.Borders[xlInsideVertical].LineStyle := xlContinuous;
   Sel.Borders[xlInsideVertical].Weight := xlThin;
   Sel.Borders[xlInsideVertical].ColorIndex := xlAutomatic;
   Sel.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
   Sel.Borders[xlInsideHorizontal].Weight := xlThin;
   Sel.Borders[xlInsideHorizontal].ColorIndex := xlAutomatic;
   Sel.Borders[xlEdgeLeft].LineStyle := xlContinuous;
   Sel.Borders[xlEdgeLeft].Weight := xlMedium;
   Sel.Borders[xlEdgeLeft].ColorIndex := xlAutomatic;
   Sel.Borders[xlEdgeRight].LineStyle := xlContinuous;
   Sel.Borders[xlEdgeRight].Weight := xlMedium;
   Sel.Borders[xlEdgeRight].ColorIndex := xlAutomatic;
   Sel.Borders[xlEdgeTop].LineStyle := xlContinuous;
   Sel.Borders[xlEdgeTop].Weight := xlMedium;
   Sel.Borders[xlEdgeTop].ColorIndex := xlAutomatic;
   Sel.Borders[xlEdgeBottom].LineStyle := xlContinuous;
   Sel.Borders[xlEdgeBottom].Weight := xlMedium;
   Sel.Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
   Sel.Font.Bold := False;
 end;


 
N   (2004-03-17 07:44) [2]

спасибо, но у меня не идентифицируются свойства - xlInsideVertical и т.д.
что делать?


 
KSergey ©   (2004-03-17 07:57) [3]

Либо писать значение этих констант, либо взять файл констант, портированный под дельфи. Либо самому же его и спортировать, как описано в любой книжке по COM (хотя у меня лично не получилось, каюсь)

Где я взял - не помню, вроде от XLReport (возможно, на их сайте). Если надо - могу намылить (в частности файл для екселя - Excel8TLB.pas; либо в инете его поищи - наверняка найдется)


 
N   (2004-03-17 08:58) [4]

спасибо Sergey
я нашла обозначение цифрами - проканывает
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].LineStyle := 1;
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].Weight := 2;
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].ColorIndex := -4105;


 
evvcom ©   (2004-03-17 10:15) [5]


> я нашла обозначение цифрами - проканывает

Все равно лучше прописать константы и использовать их. Так код легче читается. А то ведь и вовсе можно на язык машинных кодов перейти, тоже "проканает".

Инструкции типа v.range["A6:H"+(inttostr(Numb+5))].Borders[7] если вдруг используются еще и в цикле лучше присваивать вариантным переменным, и потом через них уже добираться много раз к свойствам объекта. Так будет быстрее работать, а то интерпретатор пока несколько раз разберет такую команду, уже и рак на горе засвистит.

И еще. Как написать то или иное проще всего узнать, записав в том же ёкселе или ворде макрос, нажав всего лишь кнопку "Запись макроса" потом "Останов". И все это посмотреть в редакторе VB.



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
1-1079608292
argom
2004-03-18 14:11
2004.04.04
Как в моей проге отследить команду "Свернуть все окна"


14-1078927826
Yurchik
2004-03-10 17:10
2004.04.04
Нужен uses CommonFunc.pas(.dcu). Помогите плиииссс.


3-1078882317
rosl
2004-03-10 04:31
2004.04.04
индексация


1-1079696489
INTAARI
2004-03-19 14:41
2004.04.04
Как преобразовать число (например 12) в строку типа "012"


9-1063362059
Тима
2003-09-12 14:20
2004.04.04
Помогите плиз!