Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 20:39   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,337
По умолчанию Запретить ввод данных в ячейки

Как Запретить ввод данных в определенные ячейки, через защиту яч. не пойдет.??
Есть два варианта:
1. Нечетные(четные) ячейки, пользователь вводит, скажем в А1, а не че не вводится.
2. Смешанные, как четные так и не четные, но программирую эти ячейки, я.

Спасибо.
valerij вне форума Ответить с цитированием
Старый 14.12.2009, 20:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,852
По умолчанию

Цитата:
через защиту яч. не пойдет.??
Это что? Вопрос, или утверждение?

Самый простой способ - включить\отключить защиту определённых ячеек, а потом поставить защиту листа.
Сделать это можно как макросом, так и вручную.
EducatedFool вне форума Ответить с цитированием
Старый 14.12.2009, 21:40   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,337
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Это что? Вопрос, или утверждение?.
Игорь ......, еще осталось здороваться подряд...
Цитата:
Самый простой способ - включить\отключить защиту определённых ячеек, а потом поставить защиту листа.
Я же написал, что так не пойдет, мне не надо выскакивающих сообщений,типа ячейка защищена....
valerij вне форума Ответить с цитированием
Старый 14.12.2009, 22:35   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте valerij.
Если Вам достаточно сохранения значений ячеек, можно просто не дать им измениться:
Код:
Dim v1, v2, v3' ,...
Private Sub Worksheet_Activate()
    v1 = [b20]: v2 = [b21]: v3 = [b23]' ,...
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$20" Then
    Target.Value = v1
ElseIf Target.Address = "$B$21" Then
    Target.Value = v2
ElseIf Target.Address = "$B$23" Then
    Target.Value = v3
'ElseIf ...
End If
End Sub
Евгений.
P.S. "Игорь ......, еще осталось здороваться подряд..." - у Вас и не подряд не получается.
Teslenko_EA вне форума Ответить с цитированием
Старый 14.12.2009, 22:43   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,337
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Если Вам достаточно сохранения значений ячеек,(
Да нет, неужели не понятно пишу:
"Как Запретить ввод данных в определенные ячейки??"
через защиту яч. не пойдет....
Мне не надо, что бы в яч. А1, А3, А5 что либо записали, а только записать мона в А2, А4, А6

Последний раз редактировалось valerij; 15.12.2009 в 19:32.
valerij вне форума Ответить с цитированием
Старый 15.12.2009, 19:31   #6
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,337
По умолчанию

Профессора!
Неужели так тяжело ответить или задача сложна??
valerij вне форума Ответить с цитированием
Старый 15.12.2009, 20:02   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,852
По умолчанию

Цитата:
Неужели так тяжело ответить или задача сложна??
Нет, Валера. Ни то и ни другое.

Вот пример кода, который надо поместить в модуль листа:
Код:
Dim ЗапрещённыйДиапазон As Range

Private Sub Worksheet_Activate()
    Set ЗапрещённыйДиапазон = [a2, b3:b52,f4:g18] ' здесь можно редактировать список ячеек
    Dim cell As Range
    For Each cell In ЗапрещённыйДиапазон.Cells: cell.ID = cell.Value: Next cell
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, ЗапрещённыйДиапазон) Is Nothing Then
            Target.Value = Target.ID
        End If
    End If
End Sub
При попытке изменить содержимое ячеек "ЗапрещённогоДиапазона" значения в этих ячейках будут автоматически восстанавливаться.


PS: А если тебя удивляет отсутствие ответов, так я могу попробовать объяснить, почему так происходит:

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

2. Ты ищешь сложные нестандартные решения простейших задач.
Когда тебе предлагают нормальные решения - ты отказываешься от очевидного решения, предпочитая написать 100 строк кода (который надо будет корректировать каждый месяц) вместо одной простейшей формулы.
EducatedFool вне форума Ответить с цитированием
Старый 15.12.2009, 21:58   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,337
По умолчанию

Фу, думал простейший вопрос..
Вот прикрепил реальный фрагмент, факса, там красные Х кресты, в реали их нет, в эти яч. нельзя вводить ничего, это факс, человек, который вводит данные, порой ошибается и шлепает в яч. где крест, на др. конце принимают бумагу, видя пустые клетки, сами дописывают и получается...., кошмар.

Я делал через защиту яч., тогда выскакивает сообщение, все, человек не знает, что делать, объяснять бесполезно, ноль...., ищет меня....., вообщем еще один, кошмар..

Вот мне и нужно ввел он в яч(там де красный крест), а ни чего и не произошло.

Пробовал, оставлять с крестами, ему помогает, тогда на др. конце проблема, факс приходит черно белый, кресты смазываются или не полностью пропечатываются, там гадают, какое же это ЧИСЛО и лепят наугад.......
Вложения
Тип файла: rar zxc.rar (3.7 Кб, 54 просмотров)

Последний раз редактировалось valerij; 15.12.2009 в 22:04.
valerij вне форума Ответить с цитированием
Старый 15.12.2009, 22:25   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,852
По умолчанию

Вот тебе твой же файл с защитой листа (сделано за 5 секунд)
http://excelvba.ru/XL_Files/Sample__...9__0-24-34.zip

Попробуй ввести что-нибудь в ячейки с крестами...
И сообщений никаких не вылазит.
EducatedFool вне форума Ответить с цитированием
Старый 15.12.2009, 22:28   #10
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Валерий.
Защита от ошибок пользователей эффективнее не при организации ограничений, а при создании специализированного "инструмента". В Вашем случае это форма ввода, её использование гарантирует корректность ввода и избавит от необходимости "строить защиту", Вы о её создании не думали ?
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить ввод всего алфавита и логических знаков "=+-*/" prikolist Общие вопросы C/C++ 13 02.06.2010 20:47
Как можно запретить повторный ввод нуля в ячейку StringGrid Ветас Помощь студентам 5 12.11.2009 13:43
Запретить ввод в Эдит русские символы. Ekzot1k Общие вопросы Delphi 1 14.06.2009 07:46
Не правильный ввод в ячейки mephist Microsoft Office Excel 5 27.05.2009 10:47
Как запретить/разрешить ввод от клавиатуры любых символов (в том числе и юникодных)? SkAndrew Общие вопросы Delphi 8 15.08.2008 15:30