Текущий архив: 2008.02.10;
Скачать: CL | DM;
ВнизКак скрыть строки в Excel ? Найти похожие ветки
← →
AntonUSAnoV (2008-01-11 17:37) [0]Здравствуйте Мастера!
Ситуация такая : программа генерирует отчёт по шаблону в Excel, в конкретном случае составляется список спортсменов, допустим 10 строчек (в шаблоне) вниз заполнены спец. символами типа (s1, s2, ... s10). При выполнении проги эти символы заменяются с помощью replace на фамилии спортсменов. Собственно как скрыть строки я нашёл - selection.entirerow.hide, но как можно узнать номер строки, на которой заполнение данных закончилось и как правильно выделить (select) эти строки чтобы скрыть. Или может есть какой другой способ скрыть строки ?
Кстати данные заполняются с помощью цикла: типа(код примерный)
x:=0;
for i:=0 to dbmemo.lines.count do begin
x:=x+1;
selection.replace("s"+inttostr(x),buf) //где buf - строка из МЕМО
------------------------
selection.replace("s"+inttostr(x),buf);
таким образом данные заполняются столько строк, сколько строк в DBMEMO.
← →
Сергей М. © (2008-01-11 19:56) [1]
> данные заполняются столько строк, сколько строк в DBMEMO.
Великие и могучая русское языка !
Штрафы оплачиваются столько карманов, сколько карманов в ГИБДД
← →
AntonUSAnoV (2008-01-11 20:12) [2]
> Сергей М.
какое замечательное наблюдение! А по делу?
← →
Сергей М. © (2008-01-11 20:21) [3]Какая замечательная формулировка задачи !
Какое отношение фамилии спортсменов имеют к "делу" ?)
← →
Сергей М. © (2008-01-11 20:30) [4]
> При выполнении проги эти символы заменяются с помощью replace
> на фамилии спортсменов
Если бы речь шла не о фамилиях спортсменов, а об именах инфузорий-туфелек, я бы дал тебе готовое решение.
Жаль что туфельки тебя не интересуют.
← →
AntonUSAnoV (2008-01-11 22:03) [5]
> Сергей М.
Ну представьте что в списке виды бактерий, если Вы такой любитель флоры и фауны...
← →
Dib@zol © (2008-01-11 22:09) [6]> Ну представьте что в списке виды бактерий, если Вы такой
> любитель флоры и фауны...
Ошибаешься. Он ярый ненавистник всей фауны, на етом форуме обитающей )))
← →
AntonUSAnoV (2008-01-11 22:34) [7]Ну кто может просто методы скрытия строк в Excel подсказать ?
← →
Сергей М. © (2008-01-11 22:40) [8]
> кто может просто методы скрытия строк в Excel подсказать
> ?
Сам Ёхель тебе и подскажет)
Стартуй запись макроса, укажи мышом строки, в контекстном меню выбери пункут скрытия, останови запись, просмотри текст записанного макроса - вуаля !
Что еще надобно, старче ?)
← →
AntonUSAnoV (2008-01-11 23:03) [9]Так я и узнал собственно про Hide. Но суть в том что записывая макрос ты видишь что выделяешь, т.е. конкретно указываешь экселю какие строки хочешь скрыть . А у меня др. ситуация - при работе моего приложения строки заполняются по циклу, и задача сводится к тому, чтобы узнать на какой строке заполнение остановилось, и скрыть все строки начиная с этой до другой(кстати тоже маркированной). Др. словами надо найти ячейку содерж. значение (s1), передать в переменную номер строки этой ячейки, найти ячейку содерж. (s10), передать в переменную знач. строки и скрыть все строки от первой переменной до второй. О как...
← →
Сергей М. © (2008-01-11 23:10) [10]И что ?
Тебе трудно в полученном VBA-коде подставить вместо константы переменную ? Или где ?
← →
AntonUSAnoV (2008-01-12 16:05) [11]написал в коде e.selection.find("<s"+inttostr(i)+">",xlnext,xlpart,xlbycolumns
делфи сердится, говорит несовпадение типов ... как правильно найти ячейку со значением (s1>, а затем передать в переменную номер строки этой ячейки ???
← →
Сергей М. © (2008-01-12 16:50) [12]
> говорит несовпадение типов
Сравни свой вариант вызова ф-ции с ее прототипом в excep_tlb.pas - найдешь свою ошибку.
> передать в переменную номер строки этой ячейки
r := Selection.Row
← →
AntonUSAnoV (2008-01-12 18:55) [13]Я конечно извиняюсь бесконечно но где найти ,
> excep_tlb.pas
← →
sniknik © (2008-01-12 19:18) [14]с таким именем делается при имрортировании библиотеки типов, это в меню, в проектах.
есть готовые, сдесь (имена чуток исправлены)
C:\Program Files\Borland\Delphi7\Ocx\Servers\*.*
← →
Сергей М. © (2008-01-12 19:28) [15]
> где найти
Ты ведь пользуешь компонент TExcelApplication ?
Искать ничего не надо, поручи поиск самой IDE - если ей известно, что такое "Find" в тексте твоей программы, то ей также известно и где находится юнит, где объявлен этот самый "Find".
Установи мышиный курсор на "Find" и в контекстном меню выбери пункт Find Declaration
← →
sniknik © (2008-01-12 19:38) [16]> Установи мышиный курсор на "Find" и в контекстном меню выбери пункт Find Declaration
проще, зажать Ctrl и кликнуть мышкой на интересующей декларации.
только с чего ты взял, что у него TExcelApplication? нормальные герои всегда идут в обход. ;) (наверняка все через создание обьектов и "вариант")
← →
Сергей М. © (2008-01-12 19:42) [17]
> с чего ты взял, что у него TExcelApplication? нормальные
> герои всегда идут в обход
Вряд ли.
В параметрах вызываемой Find у автора действительно бардак, на что компилятор честно отругался. А отругаться он мог только имея прототип.
← →
Сергей М. © (2008-01-12 19:42) [18]
> с чего ты взял, что у него TExcelApplication? нормальные
> герои всегда идут в обход
Вряд ли.
В параметрах вызываемой Find у автора действительно бардак, на что компилятор честно отругался. А отругаться он мог только имея прототип.
← →
AntonUSAnoV (2008-01-12 19:54) [19]Делаю так:
for i:=1 to 15 do begin
e.selection.Find("<s"+inttostr(i)+">");
r2:=e.selection.row;
e.activeworkbook.sheets.item["Список"].rows[r2]:=hide;
ничего не происходит , поиск производится только в той ячейке, на которой стоял курсор во время сохранения шаблона... ???
← →
Сергей М. © (2008-01-12 20:00) [20]
> sniknik © (12.01.08 19:38) [16]
Впрочем, судя по [19] ты оказался прав - используется олейвариантный доступ.
> AntonUSAnoV (12.01.08 19:54) [19]
> ничего не происходит
Значит поиск был неуспешен.
> e.activeworkbook.sheets.item["Список"].rows[r2]:=hide;
А это что за несуразица ?
Ты сам-то понял, что ты здесь понаписал ?
← →
__!ERIX_ (2008-01-12 20:00) [21]Кто-нибудь знает где взять справочник с описанием по коммандам(функциям) Mасдайного Offic"a
← →
Сергей М. © (2008-01-12 20:04) [22]
> Mасдайного Offic"a
Нет такого.
Есть продукт Microsoft Office.
А "масдаем" принято называть технологическую линейку ОС Win9x.
> где взять справочник с описанием по коммандам(функциям)
В соответствующих справках по VBA для кадого из продуктов в составе Офиса.
← →
__!ERIX_ (2008-01-12 20:09) [23]мда.....
типа умный.......
Но ты не прав!
почитай в инете. если ты не знаешь сам, что называют мастдайным.
>>>В соответствующих справках по VBA для кадого из продуктов в составе Офиса. - за эту фразу рассценю тебя как неудачного умника(((.гы.
← →
Максимка (2008-01-12 20:12) [24]>>> __!ERIX_ [23]
>>>В соответствующих справках по VBA для кадого из продуктов в составе Офиса. - за эту фразу рассценю тебя как неудачного умника(((.гы.
во жжет
← →
engine © (2008-01-12 20:12) [25]> [23] __!ERIX_ (12.01.08 20:09)
> за эту фразу рассценю тебя как неудачного умника(((.гы.
А что ты хотел услышать?
ИМХО самый простой и быстрый способ разобраться
← →
AntonUSAnoV (2008-01-12 20:14) [26]
> __!ERIX_
заведи собственный вопрос, вот тут расселся,
по поводу моей проблемы, да доступ у меня через OLE , но я через Excel application даже не пробовал, может легче было бы ?
А то так приходится всё узнавать на форумах и по VBA справкам (с этим сложно)
← →
Сергей М. © (2008-01-12 20:23) [27]
> __!ERIX_ (12.01.08 20:09) [23]
Вот из-за таких "удачных придурков", видимо, и было искажено значение сленгового выражения "маздай", и теперь по всему Тырнету им крестят ни в чем не повинную NT-линейку)
> AntonUSAnoV (12.01.08 20:14) [26]
> я через Excel application даже не пробовал, может легче
> было бы ?
Конечно легче)
На то компоненты и придуманы, чтобы облегчить жизнь программеру
← →
Сергей М. © (2008-01-12 20:34) [28]
> AntonUSAnoV
Видишь ли, тут дело только и не столько в выборе способа доступа к объекту автоматизации, а в смыле Паскаль-предложения, описанного тобой.
В выражении ты использовал оператор присваивания, в правой части выражения у тебя фигурирует идентификатор hide. Что это и где-как он у тебя объявлен ?
← →
AntonUSAnoV (2008-01-12 20:43) [29]В VBA , полученного макросом из Excel, код был примерно такой: selection.entirerow.hidden, в делфе такой код не прокатил ну и я его видоизменил, если так и написать в делфе
e.activeworkbook.sheets["Список"].rows[r2].hidden; то он говорит что метод hidden из класса range завершён неверно...
← →
Сергей М. © (2008-01-12 21:05) [30]
> метод hidden
Это не метод, это свойство. Булево.
Объект.Hidden := True
← →
AntonUSAnoV (2008-01-12 21:15) [31]ну тада вот значит:
e.application.rows.Find("<s"+inttostr(i)+">");
r2:=e.selection.row;
e.activeworkbook.sheets["Список"].rows[r2].hidden:=true;
но как сделать чтобы поиск производился на всём листе, а то у меня ищет только в одной ячейке, на которой стоял курсор во время сохранения шаблона.
← →
AntonUSAnoV (2008-01-12 21:24) [32][Фатальная ошибка] SaveUnit.pas(20): Internal error: SY576
Что это такое, последнее время задолбало..
← →
AntonUSAnoV (2008-01-13 14:26) [33]Мне больше ни кто не ответит?
← →
Сергей М. © (2008-01-13 18:58) [34]
> как сделать чтобы поиск производился на всём листе
Запиши соотв.макрос и посмотри в его тексте, какие параметры при этом должны быть переданы методу Find
← →
AntonUSAnoV (2008-01-13 22:49) [35]Дулфи пишет несовпадение типов! когда пытаюсь к функции find приделать какие-нибудь параметры типа find("text",xlnext, xlpart)///
← →
Сергей М. © (2008-01-14 08:07) [36]Используй компонент TExcelApplication и не парься.
← →
AntonUSAnoV (2008-01-14 16:52) [37]
> [Фатальная ошибка] SaveUnit.pas(20): Internal error: SY576
>
> Что это такое, последнее время задолбало..
это глюг просто ???
Страницы: 1 вся ветка
Текущий архив: 2008.02.10;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.056 c