Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для msgbox по условию формулы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Макрос для msgbox по условию формулы
Meissen0985 Дата: Четверг, 04.02.2021, 19:55 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Добрый день! друзья, помогите, пожалуйста с макросом, весь интернет перерыл не смог найти... Я в ВБА особо не шарю, но позарез нужен этот макрос. В примитивном примере есть формула ЕСЛИ, которая срабатывает при изменении на втором листе. Как написать макрос для msgbox, так что бы он один раз сработал при выполнении истины? Я пробовал сам написать, но бокс всплывает только после нажатия энтера в формуле и то только на этом же листе, а надо чтобы хотя бы после обновления листа и на любом листе, а не там где формула.. Заранее спасибо.
К сообщению приложен файл: 7510888.xlsx (9.6 Kb)
 
Ответить
СообщениеДобрый день! друзья, помогите, пожалуйста с макросом, весь интернет перерыл не смог найти... Я в ВБА особо не шарю, но позарез нужен этот макрос. В примитивном примере есть формула ЕСЛИ, которая срабатывает при изменении на втором листе. Как написать макрос для msgbox, так что бы он один раз сработал при выполнении истины? Я пробовал сам написать, но бокс всплывает только после нажатия энтера в формуле и то только на этом же листе, а надо чтобы хотя бы после обновления листа и на любом листе, а не там где формула.. Заранее спасибо.

Автор - Meissen0985
Дата добавления - 04.02.2021 в 19:55
_Igor_61 Дата: Четверг, 04.02.2021, 21:14 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
Если правильно понял задачу, в модуль книги:
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If Cells(1, 3) = 5 Then
           MsgBox "5"
        End If
End Sub
[/vba]


Сообщение отредактировал _Igor_61 - Четверг, 04.02.2021, 21:16
 
Ответить
СообщениеЕсли правильно понял задачу, в модуль книги:
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If Cells(1, 3) = 5 Then
           MsgBox "5"
        End If
End Sub
[/vba]

Автор - _Igor_61
Дата добавления - 04.02.2021 в 21:14
Meissen0985 Дата: Пятница, 05.02.2021, 06:34 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

_Igor_61, Спасибо, но это не то. Нужно чтобы msg реагировал на изменение в ячейке именно по формуле в листе "результат". Если истина формулы "да" всплывает сообщение...
 
Ответить
Сообщение_Igor_61, Спасибо, но это не то. Нужно чтобы msg реагировал на изменение в ячейке именно по формуле в листе "результат". Если истина формулы "да" всплывает сообщение...

Автор - Meissen0985
Дата добавления - 05.02.2021 в 06:34
Nic70y Дата: Пятница, 05.02.2021, 12:34 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 8999
Репутация: 2367 ±
Замечаний: 0% ±

Excel 2010
Meissen0985, полнее опишите задачу:
формула одна?
если не одна, то соот. ли строки на листах условие и результат?
в лист условие данные вводятся вручную?
и т.п.


ЮMoney 41001841029809
 
Ответить
СообщениеMeissen0985, полнее опишите задачу:
формула одна?
если не одна, то соот. ли строки на листах условие и результат?
в лист условие данные вводятся вручную?
и т.п.

Автор - Nic70y
Дата добавления - 05.02.2021 в 12:34
Meissen0985 Дата: Пятница, 05.02.2021, 14:19 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, по другому.... во вложении пример который мне нужно реализовать. На листе идет подсчет залитых чисел в зависимости от цвета при помощи пользовательской функции. Когда красных становится 0 должен срабатывать msgbox, но по моему коду он срабатывает если только встать в ячейку в саму формулу и нажать enter, а при пересчете формулы box не всплывает. Почему?
К сообщению приложен файл: 0179355.xls (47.5 Kb)


Сообщение отредактировал Meissen0985 - Пятница, 05.02.2021, 14:37
 
Ответить
СообщениеNic70y, по другому.... во вложении пример который мне нужно реализовать. На листе идет подсчет залитых чисел в зависимости от цвета при помощи пользовательской функции. Когда красных становится 0 должен срабатывать msgbox, но по моему коду он срабатывает если только встать в ячейку в саму формулу и нажать enter, а при пересчете формулы box не всплывает. Почему?

Автор - Meissen0985
Дата добавления - 05.02.2021 в 14:19
Nic70y Дата: Пятница, 05.02.2021, 15:42 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 8999
Репутация: 2367 ±
Замечаний: 0% ±

Excel 2010
попробуйте так
[vba]
Код
Public Function CountByColor(DataRange As Range, Coloru As Range) As Double
    Dim u As Range
    Dim kolvo As Double
    Application.Volatile True
    kolvo = 0
    For Each u In DataRange
        If u.Interior.Color = Coloru.Interior.Color Then kolvo = kolvo + 1
    Next u
    CountByColor = kolvo
End Function
[/vba]
[vba]
Код
Private Sub Worksheet_Calculate()
    If Range("Результат").Value = 0 Then MsgBox "Да"
End Sub
[/vba]
К сообщению приложен файл: 19.xls (47.0 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Пятница, 05.02.2021, 15:45
 
Ответить
Сообщениепопробуйте так
[vba]
Код
Public Function CountByColor(DataRange As Range, Coloru As Range) As Double
    Dim u As Range
    Dim kolvo As Double
    Application.Volatile True
    kolvo = 0
    For Each u In DataRange
        If u.Interior.Color = Coloru.Interior.Color Then kolvo = kolvo + 1
    Next u
    CountByColor = kolvo
End Function
[/vba]
[vba]
Код
Private Sub Worksheet_Calculate()
    If Range("Результат").Value = 0 Then MsgBox "Да"
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 05.02.2021 в 15:42
Meissen0985 Дата: Пятница, 05.02.2021, 21:41 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, отлично, то что надо!Спасибище огромное! мне бы такие мозги...
 
Ответить
СообщениеNic70y, отлично, то что надо!Спасибище огромное! мне бы такие мозги...

Автор - Meissen0985
Дата добавления - 05.02.2021 в 21:41
Meissen0985 Дата: Пятница, 05.02.2021, 21:45 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Nic70y, объясните, пожалуйста, почему мой код не срабатывал?
 
Ответить
СообщениеNic70y, объясните, пожалуйста, почему мой код не срабатывал?

Автор - Meissen0985
Дата добавления - 05.02.2021 в 21:45
_Igor_61 Дата: Пятница, 05.02.2021, 23:27 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 504
Репутация: 90 ±
Замечаний: 0% ±

Excel 2007
почему мой код не срабатывал?
Возможно, потому, что Вы хотели это сделать с помощью формулы "ЕСЛИ" в первом сообщении, а потом выяснилось, что нужно смотреть на цвет заливки и макрос, а не на формулу :)
 
Ответить
Сообщение
почему мой код не срабатывал?
Возможно, потому, что Вы хотели это сделать с помощью формулы "ЕСЛИ" в первом сообщении, а потом выяснилось, что нужно смотреть на цвет заливки и макрос, а не на формулу :)

Автор - _Igor_61
Дата добавления - 05.02.2021 в 23:27
Nic70y Дата: Суббота, 06.02.2021, 08:06 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8999
Репутация: 2367 ±
Замечаний: 0% ±

Excel 2010
потомушто
Private Sub Worksheet_Calculate()
не
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)


ЮMoney 41001841029809
 
Ответить
Сообщениепотомушто
Private Sub Worksheet_Calculate()
не
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Автор - Nic70y
Дата добавления - 06.02.2021 в 08:06
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!