Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2017, 14:41   #1
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию Формула на условие

Мне надо что бы если яч О1 превышает значения в яч N1 на 20% выходило предупреждение. Написал:
Sub проверка ()
If Range("O1") >= (N1 / 100) * 120 Then
MsgBox "бла бла бла"
End Sub
Но, сообщение выходит и при превышении и при занижении )
Не пойму...
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 22.12.2017, 14:50   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

If Range("O1") >= Range("N1") * 1.2 Then
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.12.2017, 08:32   #3
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Спасибо, все работает. Теперь думаю как подключить макрос, чтобы без лишних движений выводил сообщение.
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 25.12.2017, 09:22   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Iskin Вам туда: https://msdn.microsoft.com/en-us/vba...or=-2147217396
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2017, 10:38   #5
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

написал...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range: Set rng = [N1:O723] 'диапазон изменяемых ячеек
If Not Intersect(rng, Target) Is Nothing Then Проверка ' запускает макрос Проверка
End Sub
макрос работает, если я изменяю данные N1:O723. Но у меня в ячейках N1 и O1 стоят итоговые формулы. И хотелось бы чтобы макрос запускался именно из-за изменений в этих ячейках, а не всего столбца. Т. е. если я пишу Dim rng As Range: Set rng = [N1:O1] то реакции нет. т.к. в этих яч формулы и я там никаких действий не делаю, цифры сами меняются.
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 25.12.2017 в 11:16.
Iskin вне форума Ответить с цитированием
Старый 25.12.2017, 12:03   #6
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 232
По умолчанию

Цитата:
Сообщение от Iskin Посмотреть сообщение
Спасибо, все работает. Теперь думаю как подключить макрос, чтобы без лишних движений выводил сообщение.
Скажите а макрос это обязательное условие или веление времени ?
Почему исключаете формульное решение ?
Вложения
Тип файла: xlsx Книга1.xlsx (8.5 Кб, 9 просмотров)
0mega вне форума Ответить с цитированием
Старый 25.12.2017, 12:06   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Гуглим, не стесняемся

p.s. Вы на форуме с 2088 и еще не научились код в тег [codе] брать? имейте чуток уважения хотя бы к тем кто хочет помочь и читает ваш код.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 25.12.2017, 15:45   #8
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
p.s. Вы на форуме с 2088 и еще не научились код в тег [codе] брать? имейте чуток уважения хотя бы к тем кто хочет помочь и читает ваш код.
придется ник сменить) Вы про это имели ввиду?
Цитата:
Сообщение от Iskin
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range: Set rng = [N1:O723] 'диапазон изменяемых ячеек
If Not Intersect(rng, Target) Is Nothing Then Проверка ' запускает макрос Проверка
End Sub
Думайте глобально - действуйте локально!

Последний раз редактировалось Iskin; 25.12.2017 в 15:52.
Iskin вне форума Ответить с цитированием
Старый 25.12.2017, 16:15   #9
Iskin
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 307
По умолчанию

Цитата:
Сообщение от 0mega Посмотреть сообщение
Скажите а макрос это обязательное условие или веление времени ?
Почему исключаете формульное решение ?
Да вы правы, лучше формулой выдать сообщение. А то при каждом изменении (в заданном диапазоне) выходит сообщение, не совсем удобно
Думайте глобально - действуйте локально!
Iskin вне форума Ответить с цитированием
Старый 25.12.2017, 16:32   #10
0mega
Форумчанин
 
Регистрация: 12.09.2009
Сообщений: 232
По умолчанию

Я не знаю специфики Вашей таблицы, но мне кажется можно еще упростить
Если надо только предупредить и не блокировать ввод - тогда УФ самое то
0mega вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условие в PHP - Не работает условие: не выводит сообщение. Ave_Ave_Ave PHP 13 17.06.2016 12:20
Условие иф ABA2 Microsoft Office Excel 7 25.04.2013 15:19
Условие if revaldo666 Общие вопросы C/C++ 1 20.01.2012 01:50
Условие SkrudjMakdak Microsoft Office Excel 3 02.09.2010 17:56
Условие [Smarik] Паскаль, Turbo Pascal, PascalABC.NET 3 03.02.2008 08:08