Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2009, 19:31   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

slan, я скопировал ячейку с данными в ячейку с формулой и затер ее

Код:
Sub RrotectFormula()
  Dim c As Range
  ActiveSheet.Unprotect
  For Each c In Cells
    c.Locked = c.HasFormula
  Next
  ActiveSheet.Protect
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.02.2009, 11:27   #12
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

спасибо , добрый человек!

но задача стояла не защитить от злоумышленников, а только от случайного затирания. Да к тому же и с возможностью редактирования формулы. А защита листа была прямо отвергнута заказчиком..

Цитата:
Так я и сам знаю, мне надо именно макрос.
slan вне форума Ответить с цитированием
Старый 02.02.2009, 11:47   #13
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

кроме того - более эффективно будет:

Sub prtf()
On Error Resume Next
Cells.Locked = False
Cells.SpecialCells(xlCellTypeFormul as).Locked = True
ActiveSheet.Protect
End Sub

ибо все ячейки по-умолчанию имеют статус защищаемых и его как раз надо снять, а потом уже защитить формулы

но и на это найдется, наверное, лом..
slan вне форума Ответить с цитированием
Старый 02.02.2009, 12:26   #14
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

согласен, это
Код:
Cells.Locked = False
Cells.SpecialCells(xlCellTypeFormulas).Locked = True
выглядит гораздо привлекательнее моего цикла, а выполняться должно просто гораздо быстрее.
только вместо On Error Resume Next надо бы оставить ActiveSheet.Unprotect. Если лист на входе в процедуру уже защищен, то состояние ячеек (защищенные/незащищинные) не поменяется.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.02.2009, 12:30   #15
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

On Error Resume Next нужно для случая, если ячеек с формулами на листе нет.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.02.2009, 16:52   #16
Raikhman
Пользователь
 
Аватар для Raikhman
 
Регистрация: 30.01.2009
Сообщений: 75
По умолчанию

Есть более простой способ избежать попадания курсора в "ненужную ячейку"
Надо защитить лист, и при этом запретить выделение заблокированных ячеек. Естественно, ячейки с формулами должны оставаться защищенными, а ячейки с полями ввода данных - незащищенными. Защита листа включена. Тогда курсор просто не попадет в защищенные ячейки.
Такая штука работает, помоему, только с 2003 версии и выше.
Raikhman вне форума Ответить с цитированием
Старый 02.02.2009, 18:07   #17
Disel
Форумчанин
 
Аватар для Disel
 
Регистрация: 08.01.2009
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Raikhman Посмотреть сообщение
Есть более простой способ избежать попадания курсора в "ненужную ячейку"
Надо защитить лист, и при этом запретить выделение заблокированных ячеек. Естественно, ячейки с формулами должны оставаться защищенными, а ячейки с полями ввода данных - незащищенными. Защита листа включена. Тогда курсор просто не попадет в защищенные ячейки.
Такая штука работает, помоему, только с 2003 версии и выше.
От такого способа отказались в данной теме, надо читать с начала!!!
"Все что натыкано на клаве, ведет тебя к погибели иль славе"
Если помог нажми на весы
Disel вне форума Ответить с цитированием
Старый 02.02.2009, 23:59   #18
ok`sana
 
Регистрация: 31.01.2009
Сообщений: 4
Радость

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Если, не изменяя значение в ячейке, нажимать Enter, будут выделяться ячейки с формулами...

В Вашем примере надо хотя бы заменить Worksheet_Change на Worksheet_SelectionChange.

Но тогда не получится выделить диапазон ячеек, начиная с ячейки с формулой...



В моём примере, если осуществлён переход на ячейку с формулой, макрос сработает снова и снова - до тех пор, пока не попадётся ячейка без формулы.

Но вот насчёт использования свойства HasFormula полностью согласен (забыл про существование формул массивов)

Я бы остановился на таком варианте:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then If Target.HasFormula Then Target.Offset(1).Select
End Sub


Спасибо большое, макрос работает!!! Но если есть скрытые строки - в них "тонет"-бросьте, пожалуйста спасательный круг.
ok`sana вне форума Ответить с цитированием
Старый 03.02.2009, 00:09   #19
ok`sana
 
Регистрация: 31.01.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Raikhman Посмотреть сообщение
Есть более простой способ избежать попадания курсора в "ненужную ячейку"
Надо защитить лист, и при этом запретить выделение заблокированных ячеек. Естественно, ячейки с формулами должны оставаться защищенными, а ячейки с полями ввода данных - незащищенными. Защита листа включена. Тогда курсор просто не попадет в защищенные ячейки.
Такая штука работает, помоему, только с 2003 версии и выше.
Спасибо, что откликнулись на призыв о помощи, но суть вопроса в том, что цифры в столбец забиваются "вслепую", а если ячейка просто защищена и в неё что-то забиваешь-высвечивается окно сообщений и не пускает продвигаться дальше-можно лупить по клавишам до потери пульса, а стоишь на месте, пока не посмотришь на экран.Не подходит.
ok`sana вне форума Ответить с цитированием
Старый 01.04.2009, 12:21   #20
asrwer
Новичок
Джуниор
 
Регистрация: 31.03.2009
Сообщений: 1
По умолчанию

Помогите, кто нибудь, нужно заблокировать некоторые ячейки с формулами, чобы их никто не затер.
заранее спасибо
asrwer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите с формулой slonik Microsoft Office Excel 7 11.11.2008 14:58
Помогите с формулой. Lord_Daron Microsoft Office Excel 2 06.11.2008 21:21
Блокировать доступ Pedro Безопасность, Шифрование 8 02.03.2008 18:59
ПОМОГИТЕ С ФОРМУЛОЙ А^ександр Microsoft Office Excel 6 19.02.2008 10:17
блокировать ALT+F4 Михаил Юрьевич Общие вопросы Delphi 2 12.02.2008 23:44