Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема ограничения ввода данных в ячейку

411
24 февраля 2005 года
Serzh
136 / / 09.07.2003
Как можно ограничить длину вводимых в ячейку данных? А может быть еще и тип этих данных?
Старые программисты меня поймут: раньше в Cobol,
Fox, Clipper было понятие шаблона наподобие
PIC 'dd.mm.yyyy' и ничего кроме цифр и точек
да еще с проверкой хронологической правильности
ввести в поле было нельзя. В Excel по-моему все
можно.... Но как говорит М.Жванецкий - "Человек все может, только не надо этого ему позволять!"
405
24 февраля 2005 года
Dmitrii
554 / / 16.12.2004
Цитата:
Originally posted by Serzh
Как можно ограничить длину вводимых в ячейку данных? А может быть еще и тип этих данных?
Старые программисты меня поймут: раньше в Cobol,
Fox, Clipper было понятие шаблона наподобие
PIC 'dd.mm.yyyy' и ничего кроме цифр и точек
да еще с проверкой хронологической правильности
ввести в поле было нельзя. В Excel по-моему все
можно.... Но как говорит М.Жванецкий - "Человек все может, только не надо этого ему позволять!"



Вот пара примеров.
1. Ограничения длины вводимой в ячейку строки (до 10 символов):
Cells(1, 1).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="1", Formula2:="10"
End With

2. Назначение в качестве допустимых значений для ячейки списка данных:
Cells(2, 1).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="1,2,3"
End With

411
28 февраля 2005 года
Serzh
136 / / 09.07.2003
[QUOTE]Originally posted by Dmitrii


Это конечно утешение, но слабое...
Во-первых, нельзя сделать сложного ограничения
(второй раз ADD не проходит).
Во-вторых, и самое главное, абсолютно не
защищает от некорректного ввода путем
копирования данных из другого приложения
через ClipBoard...
459
28 февраля 2005 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Serzh
[QUOTE]Originally posted by Dmitrii


Это конечно утешение, но слабое...
Во-первых, нельзя сделать сложного ограничения
(второй раз ADD не проходит).
Во-вторых, и самое главное, абсолютно не
защищает от некорректного ввода путем
копирования данных из другого приложения
через ClipBoard...



A если проверять при изменении в ячейке, например
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
. . . . проверяем-перепроверяем . . .
End If
End Sub

411
28 февраля 2005 года
Serzh
136 / / 09.07.2003
Цитата:
Originally posted by gacol


A если проверять при изменении в ячейке, например
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Then
. . . . проверяем-перепроверяем . . .
End If
End Sub



Это может помочь в принципе...,
Но если проверять надо 4000 ячеек,
то какого объема будет соответствующая
процедура Worksheet_Change()

459
28 февраля 2005 года
gacol
273 / / 12.02.2003
Цитата:
Originally posted by Serzh


Это может помочь в принципе...,
Но если проверять надо 4000 ячеек,
то какого объема будет соответствующая
процедура Worksheet_Change()


И у каждой ячейки свой уникальный формат?
По диапазонам разложить нельзя?

411
28 февраля 2005 года
Serzh
136 / / 09.07.2003
Естественно можно, в ручном варианте я так
и сделал. Но тут речь идет о процедуре
Worksheet_Change(). Она принимает в качестве
параметра только одну ячейку. Цикл не поможет,
т.к. при копировании блоком ошибка может быть в
сотне ячеек сразу и ежели ругать пользователя
на каждую таку ошибку, то скорее всего он пошлет
меня с такой программой куда подальше...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог