Конфликт VBA и проверки данных.
light26
Дата: Вторник, 13.08.2013, 09:49 |
Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Здравствуйте, уважаемые знатоки. В файле используется макрос, для подсчета нарастающим итогом. Хотел установить проверку данных для запрета ввода дробных чисел в определенные ячейки (выделено желтым), но при вводе сначала ошибочных данных, а затем верных (например, сначала 0,1, затем 1), нарастающим итогом прибавляет 3. Как это обойти?
Здравствуйте, уважаемые знатоки. В файле используется макрос, для подсчета нарастающим итогом. Хотел установить проверку данных для запрета ввода дробных чисел в определенные ячейки (выделено желтым), но при вводе сначала ошибочных данных, а затем верных (например, сначала 0,1, затем 1), нарастающим итогом прибавляет 3. Как это обойти? light26
Я не волшебник. Я только учусь
Ответить
Сообщение Здравствуйте, уважаемые знатоки. В файле используется макрос, для подсчета нарастающим итогом. Хотел установить проверку данных для запрета ввода дробных чисел в определенные ячейки (выделено желтым), но при вводе сначала ошибочных данных, а затем верных (например, сначала 0,1, затем 1), нарастающим итогом прибавляет 3. Как это обойти? Автор - light26 Дата добавления - 13.08.2013 в 09:49
Саня
Дата: Вторник, 13.08.2013, 12:13 |
Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
проверку долой обработчик меняем: [vba]Код
If Target.Address Like "*" & a(i) & "*" Then With Target Application.EnableEvents = False ActiveSheet.Unprotect '============================================ If bCelyi(.Value) Then .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value Else MsgBox "Болт, дядя", vbCritical Application.Undo End If Debug.Print .Address & " Like *" & a(i) & "*" '============================================ ActiveSheet.Protect Application.EnableEvents = True End With Exit For End If
[/vba] в этот же модуль вниз пишем всп. функцию: [vba]Код
Private Function bCelyi(vVal) As Boolean If IsNumeric(vVal) Then If Int(vVal) = vVal Then bCelyi = (vVal >= 0) End If End If End Function
[/vba]
проверку долой обработчик меняем: [vba]Код
If Target.Address Like "*" & a(i) & "*" Then With Target Application.EnableEvents = False ActiveSheet.Unprotect '============================================ If bCelyi(.Value) Then .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value Else MsgBox "Болт, дядя", vbCritical Application.Undo End If Debug.Print .Address & " Like *" & a(i) & "*" '============================================ ActiveSheet.Protect Application.EnableEvents = True End With Exit For End If
[/vba] в этот же модуль вниз пишем всп. функцию: [vba]Код
Private Function bCelyi(vVal) As Boolean If IsNumeric(vVal) Then If Int(vVal) = vVal Then bCelyi = (vVal >= 0) End If End If End Function
[/vba] Саня
Ответить
Сообщение проверку долой обработчик меняем: [vba]Код
If Target.Address Like "*" & a(i) & "*" Then With Target Application.EnableEvents = False ActiveSheet.Unprotect '============================================ If bCelyi(.Value) Then .Offset(, -2) = .Offset(, -2) + .Value .Offset(, -4) = .Offset(, -4) + .Value Else MsgBox "Болт, дядя", vbCritical Application.Undo End If Debug.Print .Address & " Like *" & a(i) & "*" '============================================ ActiveSheet.Protect Application.EnableEvents = True End With Exit For End If
[/vba] в этот же модуль вниз пишем всп. функцию: [vba]Код
Private Function bCelyi(vVal) As Boolean If IsNumeric(vVal) Then If Int(vVal) = vVal Then bCelyi = (vVal >= 0) End If End If End Function
[/vba] Автор - Саня Дата добавления - 13.08.2013 в 12:13
light26
Дата: Вторник, 13.08.2013, 13:34 |
Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Привет, Саш. Спасибо за помощь. Ща испытаю. Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет?
Привет, Саш. Спасибо за помощь. Ща испытаю. Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет? light26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Вторник, 13.08.2013, 13:36
Ответить
Сообщение Привет, Саш. Спасибо за помощь. Ща испытаю. Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет? Автор - light26 Дата добавления - 13.08.2013 в 13:34
RAN
Дата: Вторник, 13.08.2013, 13:40 |
Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Вопрос пока такой: а чем используемый мной обработчик плох?
Тем, что не работает.
Вопрос пока такой: а чем используемый мной обработчик плох?
Тем, что не работает. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Вопрос пока такой: а чем используемый мной обработчик плох?
Тем, что не работает. Автор - RAN Дата добавления - 13.08.2013 в 13:40
light26
Дата: Вторник, 13.08.2013, 13:45 |
Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Андрей, как всегда, в своем репертуаре... Работает мой вариант. и вполне не плохо справляется с поставленной задачей
Андрей, как всегда, в своем репертуаре... Работает мой вариант. и вполне не плохо справляется с поставленной задачей light26
Я не волшебник. Я только учусь
Ответить
Сообщение Андрей, как всегда, в своем репертуаре... Работает мой вариант. и вполне не плохо справляется с поставленной задачей Автор - light26 Дата добавления - 13.08.2013 в 13:45
RAN
Дата: Вторник, 13.08.2013, 13:49 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Конечно работает. Да так усердно, что с первого раза остановиться не может.
Конечно работает. Да так усердно, что с первого раза остановиться не может. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Конечно работает. Да так усердно, что с первого раза остановиться не может. Автор - RAN Дата добавления - 13.08.2013 в 13:49
Саня
Дата: Вторник, 13.08.2013, 13:50 |
Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация:
560
±
Замечаний:
0% ±
XL 2016
Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет?
происходит именно конфликт, не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды, если на проверке нажать "Отмена" и в два раза больше количества нажатий "Повторить", но в Таргете всегда начальное значение. По логике это баг. Уровень проверки данных я не могу контролировать, поэтому удаляем и эмулируем. ps да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14* не думаю, что это нормально.
Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет?
происходит именно конфликт, не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды, если на проверке нажать "Отмена" и в два раза больше количества нажатий "Повторить", но в Таргете всегда начальное значение. По логике это баг. Уровень проверки данных я не могу контролировать, поэтому удаляем и эмулируем. ps да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14* не думаю, что это нормально.Саня
Ответить
Сообщение Вопрос пока такой: а чем используемый мной обработчик плох? И почему макрос так себя ведет?
происходит именно конфликт, не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды, если на проверке нажать "Отмена" и в два раза больше количества нажатий "Повторить", но в Таргете всегда начальное значение. По логике это баг. Уровень проверки данных я не могу контролировать, поэтому удаляем и эмулируем. ps да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14* не думаю, что это нормально.Автор - Саня Дата добавления - 13.08.2013 в 13:50
light26
Дата: Вторник, 13.08.2013, 15:02 |
Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды
И у меня. не думаю, что это нормально.
возможно, но работает. Без сбоев. Твой вариант проверки я не могу использовать. Ведь для некоторых ячеек, где единицы измерения тыс. шт. и км, значения будут вводиться дробями
не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды
И у меня. не думаю, что это нормально.
возможно, но работает. Без сбоев. Твой вариант проверки я не могу использовать. Ведь для некоторых ячеек, где единицы измерения тыс. шт. и км, значения будут вводиться дробямиlight26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Вторник, 13.08.2013, 15:06
Ответить
Сообщение не знаю, как у других, у меня при попытке ввести дробное число обработчик отрабатывает дважды
И у меня. не думаю, что это нормально.
возможно, но работает. Без сбоев. Твой вариант проверки я не могу использовать. Ведь для некоторых ячеек, где единицы измерения тыс. шт. и км, значения будут вводиться дробямиАвтор - light26 Дата добавления - 13.08.2013 в 15:02
RAN
Дата: Вторник, 13.08.2013, 15:24 |
Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать?
Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать? RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать? Автор - RAN Дата добавления - 13.08.2013 в 15:24
light26
Дата: Вторник, 13.08.2013, 16:57 |
Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать?
Правильно. не нужно. Но ты ж меня знаешь, я дуб Буду, конечно экспериментировать, направление указано...
Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать?
Правильно. не нужно. Но ты ж меня знаешь, я дуб Буду, конечно экспериментировать, направление указано...light26
Я не волшебник. Я только учусь
Ответить
Сообщение Вадим, открой секрет, зачем в ячейках с дробями этот макрос запускать?
Правильно. не нужно. Но ты ж меня знаешь, я дуб Буду, конечно экспериментировать, направление указано...Автор - light26 Дата добавления - 13.08.2013 в 16:57
light26
Дата: Четверг, 15.08.2013, 15:44 |
Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
Странная штука. Суммирует в ячейки E140 и G 140. А не должен
Странная штука. Суммирует в ячейки E140 и G 140. А не должен light26
Я не волшебник. Я только учусь
Ответить
Сообщение Странная штука. Суммирует в ячейки E140 и G 140. А не должен Автор - light26 Дата добавления - 15.08.2013 в 15:44
_Boroda_
Дата: Четверг, 15.08.2013, 16:51 |
Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация:
6503
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
If Target.Address Like "*" & a(i) & "*" Then
звездочки убери он в E140 ищет E14. Конечно, находит.
If Target.Address Like "*" & a(i) & "*" Then
звездочки убери он в E140 ищет E14. Конечно, находит._Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение If Target.Address Like "*" & a(i) & "*" Then
звездочки убери он в E140 ищет E14. Конечно, находит.Автор - _Boroda_ Дата добавления - 15.08.2013 в 16:51
light26
Дата: Пятница, 16.08.2013, 09:30 |
Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация:
91
±
Замечаний:
0% ±
2007, 2010, 2013
А, так вот о чем о чем Саня говорил да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14*
А, так вот о чем о чем Саня говорил да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14*
light26
Я не волшебник. Я только учусь
Ответить
Сообщение А, так вот о чем о чем Саня говорил да, кстати, посмотри в окно Immediate: $I$146 Like *$I$14*
Автор - light26 Дата добавления - 16.08.2013 в 09:30