PDA

Просмотр полной версии : чтобы выделенная область не пропадала



Author_R
26.01.2007, 23:53
Уважаемые, подскажите, пожалуйста, кто знает можно ли сделать так:
выделить определенную область на листе, а потом установить такую защиту листа, чтобы при любых действиях выделенная область не пропадала? А то я как ни пытаюсь это сделать, а при клике в любом месте защищенного листа эта выделенная область ичезает...
И еще о защите листов: можно ли установить такую защиту, чтобы были доступны "группировка/разгруппировка", то есть на листе уже есть сгруппированные, например, строки и чтобы была защита листа и можно было нажимать на "плюсик" группировки и не было сообщения, что невозможно работать с группами на защищенном листе

Заранее спасибо!

Genyaa
27.01.2007, 00:24
Первое решаемо (в определенном смысле, конечно) через обработку события SelectionChange.
Второе не получится решить, если защита должна быть включена...

Author_R
27.01.2007, 12:23
имеешь ввиду через применение макросов?
а стандартные настройки разве этого не позволяют?

Genyaa
27.01.2007, 14:45
Думаю, что обычные настройки параметров Екселя не позволят сделать то, что Вы спрашиваете... про Ексель 2007 не скажу, не пробовал пока, а в 2003 (xp) и раньше это точно не решить без привлечения Vba.

Игорь Акопян
28.01.2007, 02:47
чтобы при любых действиях выделенная область не пропадала
напрашивается вопрос - зачем? может и не надо это выделение совсем? ;)

Author_R
28.01.2007, 16:07
Поясню: затем, что оно (выделение) - это область, которую нужно постоянно копировать (данные в ней обновляются по выбранным параметрам и берутся с других листов книги), а случайный клик мышкой ведет к тому, что нужно ее выделять заново, а она довольно большая...

Genyaa
28.01.2007, 20:15
Почему бы не выделить один раз нужную область и не присвоить ей имя?
После этого для выделения именованной области любой сложности и объема требудется не более трех нажатия клавиш клавиатуры. А при желании можно сделать так, чтобы ограничиться одной комбинацией клавиш Ctrl+буква.

Игорь Акопян
28.01.2007, 21:02
кроме того, я это спросил, потому что многие оперируют в своих макросах свойством Selection которое редко когда нужно (кроме макрорекордера). Т.е. если к примеру, область обработки жёстко задана, то можно работать по адресам (см. Range)

pashulka
28.01.2007, 23:23
И еще о защите листов: можно ли установить такую защиту, чтобы были доступны "группировка/разгруппировка", то есть на листе уже есть сгруппированные, например, строки и чтобы была защита листа и можно было нажимать на "плюсик" группировки и не было сообщения, что невозможно работать с группами на защищенном листе


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

Это очередное заблуждение, ибо такая возможность - есть. Другое дело, что для этого придётся использовать VBA (MS Excel 97, 2000, XP)

Genyaa
28.01.2007, 23:34
Это очередное заблуждение, ибо такая возможность - есть. Другое дело, что для этого придётся использовать VBA (MS Excel 97, 2000, XP)
Вообще-то, речь шла о настройках защиты... а не о VBA... но ничего. Ваше замечание вполне... как бы это сказать?.. а, ладно... не буду... Мир Вам и радость на долгие года.

pashulka
29.01.2007, 00:56
Вообще-то защиту можно установить программно (VBA), так что мои замечания более чем уместны, а если Вы намекаете на то, что в вопросе не звучало магического слова VBA, то я замечу, что полный текст Вашего ответа звучал так :


Первое решаемо (в определенном смысле, конечно) через обработку события SelectionChange.
Второе не получится решить, если защита должна быть включена...

А события, как известно, имеют явное отношение к VBA.

Genyaa
29.01.2007, 11:02
Вообще-то защиту можно установить программно (VBA), так что мои замечания более чем уместны, а если Вы намекаете на то, что в вопросе не звучало магического слова VBA, то я замечу, что полный текст Вашего ответа звучал так :
А события, как известно, имеют явное отношение к VBA.
Ступайте с миром, дорогой друг... и пусть все будет Вам во благо.

pashulka
29.01.2007, 11:27
Куда мне идти я решу без Вашего участия, а благом для всех (imho) было бы отсутствие подобного рода "ответов", которые иначе как заблуждением, назвать трудно.

Author_R
30.01.2007, 21:09
Куда мне идти я решу без Вашего участия, а благом для всех (imho) было бы отсутствие подобного рода "ответов", которые иначе как заблуждением, назвать трудно.

Друзья, не нужно ссорится!!!

pashulka
30.01.2007, 22:18
Author_R, Это "однобокое" цитирование, ибо отсутствует посылание на ... (в какие бы "белые" одежды оно не рядилось) которое предшествовало моему ответу.

Кстати, моё предложение касаемо решения второго вопроса, остаётся в силе.

Author_R
30.01.2007, 22:31
Ступайте с миром, дорогой друг... и пусть все будет Вам во благо.


Не надо ссориться! Земля - наш общий дом! :)

Author_R
30.01.2007, 22:33
Author_R, Это "однобокое" цитирование, ибо отсутствует посылание на ... (в какие бы "белые" одежды оно не рядилось) которое предшествовало моему ответу.

Кстати, моё предложение касаемо решения второго вопроса, остаётся в силе.

Какое именно?

pashulka
30.01.2007, 23:51
И еще о защите листов: можно ли установить такую защиту, чтобы были доступны "группировка/разгруппировка", то есть на листе уже есть сгруппированные, например, строки и чтобы была защита листа и можно было нажимать на "плюсик" группировки и не было сообщения, что невозможно работать с группами на защищенном листе

Начиная с MS Excel 97 это можно сделать программно, при этом защита будет установлена. Если же использование VBA нежелательно, то и фиг с ним (ответом)

Author_R
31.01.2007, 20:28
Да, если можно, хотелось бы узнать, как это делается программно!

pashulka
31.01.2007, 21:31
Смотрите пример.

Druid
07.02.2007, 13:38
Смотрите пример.

Кхе, я конечно критиковать не берусь, но в данном примере не работает группировка при защищенном листе. А как я понял, человеку требовалось то же, что собственно и мне, а именно: Закрыть на редактирование некоторые ячейки (например содержащие формулы) и одновременно с этим оставить возможность пользоваться группировкой (сворачивать и разворачивать группы). Пользую 2003 Excel. Так после установки всех галочек ("защищаемая") на нужных ячеках и установленки защиты листа попаролю (без этого смысла в галочках "защищаемая" просто никакого!), эта мелкомягкая зара начинает ругаться при попытке свернуть или развернуть группу =(

Кто может помочь, отзовитесь плззз.

Druid
07.02.2007, 13:45
Кхе, я конечно критиковать не берусь, но в данном примере не работает группировка при защищенном листе. А как я понял, человеку требовалось то же, что собственно и мне, а именно: Закрыть на редактирование некоторые ячейки (например содержащие формулы) и одновременно с этим оставить возможность пользоваться группировкой (сворачивать и разворачивать группы). Пользую 2003 Excel. Так после установки всех галочек ("защищаемая") на нужных ячеках и установленки защиты листа попаролю (без этого смысла в галочках "защищаемая" просто никакого!), эта мелкомягкая зара начинает ругаться при попытке свернуть или развернуть группу =(

Кто может помочь, отзовитесь плззз.


Искренне прошу простить меня, просто Эксель без предупреждений отрубил все макросы =(. Потому и не работал =)


Бааальшое спасиба, как и думал, надо было всего одно своество написать : EnableOutlining.

pashulka
07.02.2007, 14:08
Искренне прошу простить меня, просто Эксель без предупреждений отрубил все макросы =(. Потому и не работал =)

Бааальшое спасиба, как и думал, надо было всего одно своество написать : EnableOutlining.

1. Используйте цифровую подпись (более подробно см. справку)
2. Нет, необходимо ещё использовать и аргумент UserInterfaceOnly:=True (см. пример)

Druid
07.02.2007, 18:16
1. Используйте цифровую подпись (более подробно см. справку)
2. Нет, необходимо ещё использовать и аргумент UserInterfaceOnly:=True (см. пример)

ну UserInterfaceOnly у меня уже было выставлено, в момент когда защита ставится его значение передается в качестве параметра в protect.

Проблема в другом возникла, мне это все надо сделать из Delphi (сформировать файл, сделать группировку и повесить защиту), с применением свойства листа EnableOutlining до сохранения файла группировка работает, однако после сохранения файла и его повторного открытия защита листа обламывает группировку (не дает сворачивать\разворачивать группы). А макрос воткнуть в Excel из Delhi не удается (с 2002 Excel эта опция не поддерживается). Вот и не знаю как быть. Если есть какиенибудь соображения по этому повод, подскажи.

pashulka
07.02.2007, 21:29
Естественно Вы использовали аргумент UserInterfaceOnly, однако, сказано было, что достаточно использовать свойство EnableOutlining и проблема будет решена, а это конечно же не так.

Что касается Вашей проблемы, то если у Вас возникли трудности с MS Excel XP/2003/, где для работы с VBProject необходимо иметь доверенный доступ, то можно попробовать следующее: либо предварительно создать шаблон содержащий нужный макрос и использовать его для формирования своего файла, либо изменять параметры реестра отвечающие за установку доступа к VBProject (imho это не есть хорошо) или создать модульный лист. Как все это будет выглядить на Delphi без понятия, но в соответствующем разделе форума возможно знают.

P.S. При ответе цитировать предыдущее сообщение вовсе не обязательно.

Druid
07.02.2007, 22:29
Спасибо, буду пробовать.