Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.10;
Скачать: [xml.tar.bz2];

Вниз

Как скрыть строки в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.064 c
2-1200288161
АндрейК
2008-01-14 08:22
2008.02.10
номер строки в DBGrid


2-1200318743
Yury
2008-01-14 16:52
2008.02.10
передача по фтп


15-1199960811
@!!ex
2008-01-10 13:26
2008.02.10
Радиоуправление.


2-1200253396
AntonUSAnoV
2008-01-13 22:43
2008.02.10
по поводу findwindow


15-1199276594
with
2008-01-02 15:23
2008.02.10
with do





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский