Событие ввода данных в Calc

Автор Man Lee, 30 ноября 2010, 09:31

0 Пользователи и 1 гость просматривают эту тему.

Man Lee

Добрый день...
Задача такая - проверка правильности ввода данных в ячейку Calc...
отсюда вопрос:  Есть ли возможность отловить момент завершения ввода данных в ячейку ? например, потерю фокуса ячейкой...

dr.Faust

А стандартная проверка данных чем не устраивает?
(Данные -> Проверка...)
Свобода информации - свобода личности!

Man Lee

Да вот что-то не могу заставить его работать :(
в столбец будут вводиться штрих-коды, начинающиеся на 2
а если введён код начинающийся НЕ на 2, то как-то привлечь внимание пользователя..

я выделяю столбец, выбираю в меню Данные->Проверка... на вкладке Критерий, в списке Допустимый тип данных выбираю Целое число, в выпадащем списке Данные выбираю "больше или равно"  а в поле Минимум пишу 2
и ничего :(

в выделенные ячейки всё также можно вводить ЛЮБЫЕ символы, как цифры так и буквы :(

Man Lee

#3
кстати, в Ёкселе такая проверка делалась вот таким макросом:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 col = Mid(ActiveCell.Address, 2, 1)

 If col = "C" Then

   ActiveCell.Offset(1, -2).Select

 End If

 If (col = "B" And ActiveCell.Value = "") Then

   If ActiveCell.Offset(0, -1).Value <> "" Then

     ActiveCell.Value = 1

     If Mid(ActiveCell.Offset(0, -1).Value, 1, 1) <> "2" Then

       ActiveCell.EntireRow.Interior.ColorIndex = 3

     End If

     '//

     ActiveCell.Offset(1, -1).Select

   End If

 End If

End Sub

он выделял строку красным, если в определённый столбец вводился штрих-код начинающийся не с цифры 2

JohnSUN

Вообще-то этот макрос делал чуть-чуть больше, чем просто подсвечивание строки красным. Он еще и записывал в столбец B единичку, если в колонку A хоть что-нибудь было внесено.

Интересно, а что нужно было сделать, если ошибка ввода все-таки случалась? Ну, в смысле - ввел неправильный штрих-код, строчка стала красной, возвращаемся назад и исправляем ошибку... А дальше? Выделяем строку и убираем цвет вручную? Ведь в макросе этот случай - исправление ошибки - не был предусмотрен.

Нельзя ли немного подробнее рассказать о книге и о задаче, которую она решает? Штрих-коды могут быть произвольные или где-то на соседнем листе есть перечень допустимых кодов с соответствующими товарами (бланками, запчастями или что там кодами обозначено)? Дело в том, что если для каждого допустимого кода уже есть заполненная позиция (назовем это справочником), то можно проверять не на "первую двойку", а на "нет такого кода" - это проще. Да и ввод данных можно было бы упростить... Ведь при проверке штрих-кода на допустимость одной только "первой двойки" мало. Нужно проверять и "длина кода точно равна стольким-то символам", и "контрольная сумма в такой-то цифре правильная", и много еще чего...

Чтобы как-то привлечь внимание пользователя к ошибочным данным можно использовать не только "Данные -> Проверка...", но и "Формат -> Условное форматирование". Какой из инструментов лучше выбрать в данном случае?
Если мы будем немного больше знать о задаче, то сможем все вместе выбрать наиболее простое и удобное решение.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

AcetonKZ

#5
Может я  упускаю тонкость вопроса, а простое условное форматирование ячейки не подойдет для "подцвечивания"?
Видимо, речь идет о весовом товаре?! ;)

[вложение удалено Администратором]

Man Lee

Цитата: AcetonKZ от 30 ноября 2010, 10:32Интересно, а что нужно было сделать, если ошибка ввода все-таки случалась? Ну, в смысле - ввел неправильный штрих-код, строчка стала красной, возвращаемся назад и исправляем ошибку... А дальше? Выделяем строку и убираем цвет вручную? Ведь в макросе этот случай - исправление ошибки - не был предусмотрен.

Именно так. Но большего и не требовалось.
Не было задачи проверять правильность самого штриха, вы ещё скажите контрольную сумму считать ;)
Это проверка на "внутренний" штрих код. Чёбы юзер, не ввёл штрих-код производителя, а если ввёл - то среагировал бы на красный цвет :)

Цитата: AcetonKZ от 30 ноября 2010, 10:32Может я  упускаю тонкость вопроса, а простое условное форматирование ячейки не подойдет для "подцвечивания"?
а что имеется ввиду под "условным форматированием" ??? опять Данные->Проверка ? не катит..

Всё что нужно, проверить введённое в ячейку значение на некий критерий (начинается с 2), НО ! проверить сразу после того как пользователь закончил ввод в эту ячейку ! а не потом...

AcetonKZ

"Формат -> Условное форматирование"
см приложенный ранее мной файл

convas

Условное форматирование, но с другим условием.

[вложение удалено Администратором]

AcetonKZ

мое условие проверяет заодно и длину введенных символов

JohnSUN

#10
Цитата: Man Lee от 30 ноября 2010, 09:42ещё скажите контрольную сумму считать
А пуркуа бы, собственно, и не па? Я уже так и сказал... Calc с такими задачами справляется достаточно успешно. Зато пользователю жизнь облегчило бы очень сильно.  А если бы существовал еще и справочник внутренних штрих-кодов, то можно было бы постараться организовать ввод по нескольким символам. Чтобы руками вбивать не весь код, а только несколько цифр...

Но коллеги абсолютно правы: для такой, сильно упрощенной задачи условное форматирование - "самое то".
(PS. Кстати, и в Excel можно было не писать макрос, а использовать те же механизмы - проверку на значение и условное форматирование)

Цитата: AcetonKZ от 30 ноября 2010, 10:37мое условие проверяет заодно и длину введенных символов
Ну да. Кроме того еще и проверяет на наличие недопустимых знаков. Букв, например. Вот только о длине штрих-кода ровно в 13 знаков пока еще никто ничего не говорил. И если Man Lee сейчас скажет, что в их внутреннем штрих-коде бывает от восьми до четырнадцати цифр, то решение перестанет работать...

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

AcetonKZ

#11
В моей трудовой деятельности как раз коды EAN13 в основном, и никто не мешает более сложные условия задать, однако нужна инфа от ТС
Хотя ваше решение использует теже принцыпы как и мое. Без дополнительной инфы от ТС далее никак.

smaharbA

в калке, как собственно в целом ООо работа с событиями крайне отвратительно реализована
но возможна
Я конечно далек от мысли... (с)

Man Lee

Спасибо всем, за подсказки и помощь :)
Но руками штрих-код не вводится, он вводится сканером с интерфейсом в "разрыв клавиатуры" и вот та самая единичка, которая ставиться макросом следом за штрих-кодом, обозначает кол-во товара. Просто на товар клеится собственный штрих-код, и сканить надо именно его, а не код производителя. В общем макрос был написан что-бы максимально упростить ввод товара при инвентаризации. При использовании этого макроса вся операция состоит в том, что бы "чиркнуть" сканером по упаковке :)
А использовался именно макрос, потому что он позволял не только проверить код но и позиционировать курсов ввода на следующую ячейку.

Цитата: smaharbA от 30 ноября 2010, 14:56в калке, как собственно в целом ООо работа с событиями крайне отвратительно реализована
но возможна
а можно указать на имеющуюся возможность работы с событиями ? поскольку всё что нашёл это привязка макроса к событию, вроде открытия документа, запись...

convas

Цитироватьа можно указать на имеющуюся возможность работы с событиями ?
Например, это:
http://community.i-rs.ru/index.php/topic,16887.msg98808.html#msg98808