Страницы: 1
RSS
По завершении ввода данных макрос проверяет введенное число на кратность
 
Доброго дня! Подскажите, пожалуйста! Задача: в столбец "Н" формулой вводятся числа, обязанные быть кратными 6 (шести). Опечатка в начале и приходится искать ошибку! Что бы видеть ошибку на начальном этапе необходим код для проверки введенных данных на кратность шести, и если условие не выполнено (н-р 6,278), то сообщение - "ошибка, число не кратно шести"...ну или что то в этом духе. Спасибо!
 
Цитата
evg_glaz написал: ну или что то в этом духе
"Проверка данных" - к вашим услугам... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
если число Н считает Какая_то_формула, то напишите в Н
=округлт(Какая_то_формула;6)
и ничего не нужно проверять макросом
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, нужно не округлить, а именно проверить, и если не кратно 6, то сообщить
Z, таблица считает и заполняет строку по ПКМ , в этот момент и хотелось бы проверить "без лишних телодвижений"
 
Цитата
evg_glaz написал: таблица считает и заполняет
Ну так если она такая умная и умелая, то чего ее контролировать?!
Проверка - работает при ручном вводе данных в ячейку.
ps Повторите, пжлста, пп 2.2, 2.3 ... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z,Потому и прошу помощи в написании макроса.
 
Пример (урезан)
 
Z, Вы и подсказать не подсказали, и тему затормозили, да еще и замечание сделали... Благодарности нет предела! А вопрос для знающих людей простецкий (хотя, возможно, могу ошибаться, но чую - простецкий), и примером (на который Вы даже не взглянули) засорять эфир не было совершенно никакой необходимости - из сообщения все предельно ясно и понятно. Так держать, Z !!!
 
Подсказал: проверка данных.  После Вашего уточнения подсказал, что проверка данных работает при ручном вводе данных и Вам желательно ознакомиться с правилами, показать пример. И не затормозил, а ускорил: Вам позже все равно предложили бы показать пример.
Или для Вас подсказка - только решение? Никто не обязан, помогают добровольно.

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

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("H11:H1048576")) Is Nothing Then Exit Sub
    
    With Target
        If .Value / 6 <> .Value \ 6 Then
            Call MsgBox("Не кратно 6.", vbCritical)
        End If
    End With
    
End Sub

 
А так ещё и выделяться будет не кратная ячейка.
Код
    With Target
        If .Value / 6 <> .Value \ 6 Then
            .Select '<------------------------------------------
            Call MsgBox("Не кратно 6.", vbCritical)
        End If
    End With
 
JayBhagavan, МатросНаЗебре, идея верная. Но... У меня курсор вообще не попадает на столбец "Н" (перескакивает сразу на ячейку столбца "I" для ввода), а предупреждение выскакивает только тогда, когда курсор на ячейке столбца Н. Возможно ли это подправить? Или придется делать "селект" на проверяемую ячейку после ввода данных в ячейку столбца "I"? И, конечно, благодарен за понимание и отзывчивость!!! Спасибо!
И, друзья, простите, пожалуйста, немного ввел в заблуждение....Правильное расположение формулы в конце таблицы со строки 142....
Изменено: evg_glaz - 31.10.2016 16:54:46
 
Код
 With Target.Offset(, -1)  
 
МатросНаЗебре,Ввожу в "I"  12.6 - формула считает - результат 84 (кратно 6, т.е. 14 ровно) все работает верно. Ввожу 5,4 - формула считает - результат 36 (кратно 6, т.е. 6 ровно), но сообщение выскакивает, что не кратно... И с 10,8 (результат - 72) тоже самое. Посмотрел - при вводе числа кратного 2,7 результат в "Н" дает кратный шести, но сообщение об "некратности" выскакивает...  
Изменено: evg_glaz - 31.10.2016 17:08:05
 
Код
If (.Value / 6 - .Value \ 6) > 0.0000000001 Then
 
МатросНаЗебре, АЛЛИЛУЙЯ!!!! Спасибо большое! То, что надо!
Страницы: 1
Наверх