Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel - проверка данных (validation) - custom / 6 сообщений из 6, страница 1 из 1
28.10.2003, 12:42
    #32307282
Vitaly Vengrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
Кто нибудь работал с oбъектом validation ?
Интересует возможность создать свой тип проверки
Для этого в методе add можно задать тип xlValidateCustom

В описании к нему написано :

Formula1 is required, Formula2 is ignored. Formula1 must contain an expression that evaluates to True when data entry is valid and False when data entry is invalid.

И вот помогите написать правильно Formula1.

Например чтобы длина текста вводимого текста была не больше 2х
Не получается у меня :(
...
Рейтинг: 0 / 0
28.10.2003, 13:32
    #32307387
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub CheckTwoCharsItems()
'
' Макрос записан  28 . 10 . 2003 
'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertWarning, _
        Operator:=xlEqual, Formula1:= "2 "
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle =  "Контроль длины  маленькой штучки" 
        .ErrorTitle =  "Не та штучка!" 
        .InputMessage =  "Введите двухсимвольный текст" 
        .ErrorMessage =  "Требуемая штучка должна иметь размер №2 "
        .ShowInput = True
        .ShowError = True
    End With
End Sub
...
Рейтинг: 0 / 0
28.10.2003, 13:51
    #32307421
Vitaly Vengrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
Вы не поняли. Я просил как самому написать проверку посредством типа xlValidateCustom.

Проверка длины текста я просто привел к примеру.
На самом деле будет другие условия - намного сложнее. И стандартными средставми их не опишешь. Для этого и создан тип xlValidateCustom
В котором в Formula1 описываешь условие определяющее подходит введенное значение или нет. Но разобрать как правильно написать это условие я не могу.
Поэтому прошу помочь описать данное условие на примере проверки длины текста. formula1 = Len(activecells.value) > 2 не проходит так как в activecells.value попадает значение на момент написания условия и оно не изменяется при смене ячейке. Следовательно как то не так нужно формировать условие. :(
...
Рейтинг: 0 / 0
28.10.2003, 16:09
    #32307743
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
Определение правильности вводимых данных с помощью формулы
Выделите ячейки, на которые нужно наложить ограничения.


Выберите команду Проверка в меню Данные, а затем откройте вкладку Параметры.


Выберите тип Другой в окне Тип данных.


В поле Формула введите формулу для расчета логического значения (ИСТИНА или ЛОЖЬ). Данные, вводимые в ячейку, считаются некорректными, если результатом вычислений является значение ЛОЖЬ. Перед формулой необходимо поставить знак равенства (=).
Например, на листе производится расчет прибыли путем вычитания суммы вводимых издержек из расчетной суммы дохода. Может возникнуть необходимость поддерживать прибыль на уровне, превышающем определенный процент издержек. В этом случае для ячеек D6:D13, служащих для ввода издержек, следует определить допустимые данные с помощью формулы следующего вида: =Прибыль > СУММ(D6:D13) * 15%, где «Прибыль» — это имя ячейки.

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

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

Чтобы выводить подсказку, а также давать пояснения по поводу некорректных данных или предотвращать их ввод, укажите типы сообщений на вкладках Сообщение для ввода и Сообщение об ошибке.
Инструкции

Чтобы отменить вывод сообщений, снимите флажок Отображать подсказку, если ячейка является текущей на вкладке Сообщение для ввода, а также флажок Выводить сообщение об ошибке на вкладке Сообщение об ошибке.

Примечания

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


Используемая в качестве ограничения формула может анализировать данные только на том листе, на котором наложены ограничения. Чтобы употреблять в формуле данные из других листов или книг, введите ссылку на внешние данные в ячейку активного листа или определите на нем имя внешних данных. Таким образом формула будет содержать ссылку на ячейку или имя, находящиеся на том же листе. Например, если данные, которые требуется использовать в формуле, находятся в ячейке A6 на первом листе книги Бюджет.xls, можно определить имя «Данные» на активном листе как =[Бюджет.xls]Лист1!$A$6 и затем ввести ссылку на «Данные» в формулу. Чтобы получить более подробные сведения об определении имен, нажмите кнопку .


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


Если в поле Тип данных выбран тип, отличный от Другой, значением формулы, задающей ограничение, должно быть число.
...
Рейтинг: 0 / 0
28.10.2003, 19:43
    #32308102
Vitaly Vengrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
Ну смотри :
Хорошо если в созданной формуле можно жестко указать ячейку или диапазон ячеек.
Но вот пример.
Мне нужно допустим для диапазона A1:A200 определить правильность водимых данных
Длина текста отредактируемой ячейки не должна быть больше 2-х символов.
Как указать формулу чтобы она работала для каждой ячейки в диапазоне A1:A200.
То есть примерно должно быть что то типа этого :
Formula1 = Len(<текущая ячейка в которую только что ввели данные>) < 2
Как определить эту ячейку ? Если она постоянно меняется.?
Не буду же я эту формулу писать для каждой ячейки с указанием A1, A2, A3 … и т.д.
Пробую вот так :
Formula1 = Len(cells(Cells.Row, “A”).Value) < 2
Надеясь что под Cells.Row понимается как раз этот ряд. Но ничего не получается 
И кстати какой книгой пользуешся? Может скинешь Урл или саму книгу на емейл. ?
Буду очень признателен.
...
Рейтинг: 0 / 0
29.10.2003, 14:39
    #32309022
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel - проверка данных (validation) - custom
>Мне нужно допустим для диапазона A1:A200 определить правильность водимых данных
> Не буду же я эту формулу писать для каждой ячейки с указанием A1, A2, A3 … и т.д.
В таком случае, на мой взгляд, целесообразнее использовать обработчик
Worksheet_Change(ByVal Target As Range)
или
Worksheet_SelectionChange(ByVal Target As Range)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel - проверка данных (validation) - custom / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]