Уважаемые специалисты! Не могу сказать, что я тупой, но показался себе таким, когда столкнулся с вашей профессиональной сферой. Нужно написать простенький макрос для Excel 2003. Приложил все усилия, чтобы сделать это самостоятельно, перелопатил тонны информации, но, видимо, это не мое. Ничего не могу поделать и вынужден обратиться к вам. Итак, нужен простой макрос. Макрос должен постоянно проверять один столбец N:N - 14-й по счету. Таблица заполнена постоянно меняющимися данными, меняющимися потому, что на другом листе подгружаемая с сайта информация. Эти данные распределяются по таблице, рассчитываются различными формулами и т.д. В столбце N:N тоже стоят формулы, и значения в ячейках могут быть 0 и 1. В большинстве своем там стоят нули, но иногда появляются единицы. Так вот, о появление такой единицы макрос должен оповещать звуком. Т.е., проверка столбца должна производиться постоянно. Данные обновляются раз в минуту. Подобная тема обсуждалась здесь: http://www.planetaexcel.ru/forum/index.php?FID=8&PAGE_NAME=read&TID=5846 Но, это не совсем то. Макрос такого типа для одной ячейки мне подошел и работает:
Код
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If [N2] <> "" And [N2] = [N1] Then
mciExecute ("Play C:\Windows\Media\tada.wav")
End If
End Sub
Но все мои попытки разобраться с остальными ячейками в столбце N:N терпят сокрушительный крах. В ячейке N1 у меня стоит единица, как образец для макроса, ее я могу убрать, если понадобится. Понимаю, что макрос должен быть предельно простой, но моих умственных способностей не хватает, к сожалению, решить этот вопрос. Помогите, пожалуйста!
У меня tada не звучит, не стал менять код - просто следите за месиджбоксом, можете вместо него поставить свой звук. P.S. файл удалил, ибо ниже есть версия в xls
Hugo написал: У меня tada не звучит, не стал менять код - просто следите за месиджбоксом, можете вместо него поставить свой звук. P.S. файл удалил, ибо ниже есть версия в xls
Не совсем понял... Что значит детектерить пересчет формулы и для какой это цели... Tada действительно не звучит, но у меня не получается визуально следить, в том-то и дело. И вот этот месседжбокс, это он в итоге что показывает?
kavaka08,н-да, засада, когда меняешь руками - все звучит во всех ячейках, но дело в том, что в них вычисляют формулы, и вот результаты этих вычислений - нужные нам единицы - не улавливает макрос...
может что-то мешает? формулы во всех ячейках такого типа:
meller написал: И вот этот месседжбокс, это он в итоге что показывает?
- так там ведь написано! Правда не совсем правду там написал - сообщение появляется если изменилось расположение, а не количество единиц. И да, если просто пропала одна единица - тоже сообщит. Если это лишнее - нужно думать, но сделать можно. Если знать, что изменяться эти единицы могут только по-одной, тогда всё сильно упрощается - можно действительно только их подсчитывать, и кричать только если количество увеличилось. Ну а работает всё это дело... Вы название файла видели?
По формуле - вообще-то поспешил, она неидеальна, её можно случайно "обмануть", нужно вероятно не сумму номеров строк выводить, а склеивать строку из номеров. Но т.к. я не формулист, склеить могу только с помощью UDF, думаю есть способ сделать проще... По поводу "только когда появилась" - а если вдруг исчезло две штуки, а появилась одна? Похоже задача не так проста, если возможны всякие варианты...
Hugo написал: Если знать, что изменяться эти единицы могут только по-одной, тогда всё сильно упрощается - можно действительно только их подсчитывать, и кричать только если количество увеличилось. Ну а работает всё это дело... Вы название файла видели?
Единицы появляются по одной, но существует вероятность, хоть и небольшая, что получится одновременное появление двух-трех единиц. Название файла видел, но, честно признаться, текстбокс понятие для меня незнакомое... я не специалист ) точнее специалист, но совсееем в другой сфере )
Получается нужно где-то хранить предыдущую информацию или как-то организовать так, чтобы было что с чем сравнивать а именно переход с 0 на 1, и тогда оповещать.
Ну на случай "одна появилась, а одна исчезла" у меня уже детектит. Но например если единицы были в позициях 4 и 5, и вот они заменились на новую в позиции 9 - и макрос промолчит... А сколько всего ячеек нужно отслеживать максимум? Миллион?
skais675 написал: Получается нужно где-то хранить предыдущую информацию или как-то организовать так, чтобы было что с чем сравнивать а именно переход с 0 на 1, и тогда оповещать.
Это в макрос можно зашить? Чтобы он копировал столбец N:N после каждого сравнения... но тогда нужно выбирать какой-то временной промежуток для такого сравнения. Можно конечно сделать, скажем, минуту... Но, мне кажется, решение окажется намного проще, по-моему мы все усложняем