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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2010, 23:34   #1
SVGuss
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 55
По умолчанию Воспроизвести звук при появлении в ячейке заданного значения

К сожалению, дальше элементарной записи макроса с помощью кнопочек мои знания не простираются, поэтому прошу помощи.
В ячейки экселевского листа через DDE транслируются котировки. Дальше я перевожу их в проценты и мне нужно, чтобы, когда этот процент будет выше определенного значения, эксель инициировал бы звуковой сигнал. Скажем, если прибыль/убыток выше 5% от общей суммы счета, звучит сигнал. При этом желательно, чтобы этот звук воспроизводился бы виндой, то бишь без запуска медиа-плейера, и чтобы звуковой файл можно было бы менять (или повторять несколько раз, но это наверное сложнее, проще просто подставить отредактированный файл).
Раньше я сталкивался с макросами как с одноразовым действием, которое запускается кнопкой. А тут нужно, чтобы условие проверялось бы постоянно, каждый раз, когда меняется значение в ячейке, или пересчитывается формула. То есть, я понимаю это так: лист обновился, макрос проверил значение, если оно меньше, то ждем следующего тика, если больше, то звучит звонок.
Как это сделать,я не представляю, буду благодарен за любую помощь.

Последний раз редактировалось SVGuss; 02.12.2010 в 23:38.
SVGuss вне форума Ответить с цитированием
Старый 03.12.2010, 00:26   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Смотрите здесь,он не только играть на трубе умеет,но и разговаривает,если вы настроите речь
И говорит значение в ячейке
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 03.12.2010, 00:30   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Можно еще так.
Вложения
Тип файла: zip Звук.zip (13.9 Кб, 179 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 03.12.2010, 00:40   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Или еще проще, с использованием системных звуков самой Windows
Код:
Sub sound()
iFileName = "C:\Windows\Media\chimes.wav"
iMacroFunction = "SOUND.PLAY(,""" & iFileName & """)"
ExecuteExcel4Macro iMacroFunction
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 03.12.2010 в 00:44.
VictorM вне форума Ответить с цитированием
Старый 03.12.2010, 00:51   #5
SVGuss
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 55
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Можно еще так.
doober - У меня выскакивает ошибка и открывается VB. Сложно для меня все это.

VictorM, звиняйте чайника, а где в макросе прописано это условие, что должно быть именно число 99 в ячейке? Мне это совершенно подходит, только нужно прописать условие, что если число в ячейке больше, чем значение другой ячейки, которую я заполню руками, то раздается звук. Ткните носом, как это условие прописать или хотя бы где оно, пожалуйста.

-----------
ааа, кажется, нашел - это в MS objects условие запрятано. Спасибо, вроде понял теперь, попробую сделать.

Последний раз редактировалось SVGuss; 03.12.2010 в 00:55.
SVGuss вне форума Ответить с цитированием
Старый 03.12.2010, 01:13   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Значит у вас 7,там агент не идет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 03.12.2010, 10:15   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
где в макросе прописано это условие, что должно быть именно число 99 в ячейке
В коде модуля листа (пкм на ярлыке листа - исходный код) увидите вот такое
Код:
Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [a1] = 0.99 Then '99% - здесь проценты
          Call Звук
    End If
End Sub
Здесь и проценты прописаны и другие действия можно прописать
Цитата:
если число в ячейке больше, чем значение другой ячейки, которую я заполню руками
примерно так
Код:
If [a1] > [a2] Then
          Call Звук
    End If
Чтобы, например, отслеживать события только в ячейках столбца А, а не на всем листе, можно написать так
Код:
Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim iTarget As Range
    Set iTarget = Intersect(Me.Range("A1:A1000"), Target)
    If Not iTarget Is Nothing Then
        If [a1] > [a2] Then 'сравниваемые ячейки
            Call Звук
        End If
    End If
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 03.12.2010 в 10:50.
VictorM вне форума Ответить с цитированием
Старый 03.12.2010, 11:15   #8
SVGuss
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 55
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Чтобы, например, отслеживать события только в ячейках столбца А, а не на всем листе, можно написать так
Спасибо! Как только заработаю чего-нибудь с помощью этого прибамбаса, скажу "Большое спасибо".
SVGuss вне форума Ответить с цитированием
Старый 06.12.2010, 04:57   #9
SVGuss
Пользователь
 
Регистрация: 11.09.2010
Сообщений: 55
По умолчанию

Увы, на живых тиках попробовал - не работает. Вернее, работает, но только тогда, когда я вручную кликаю на ячейках. В приложении видео: живые котировки транслируются, но звука нет. Нужно кликнуть на другую ячейку, только тогда макрос срабатывает (условие, которое тут должно срабатывать при обновлении листа - значение в ячейке P5>G2).

Макрос - как тут меня научили. Код в объектах
Код:
Sub Worksheet_SelectionChange(ByVal Target As Range)
    If [p5] < [g1] Then
          Call Звук
    End If
        If [p5] > [g2] Then
          Call Звук
    End If
End Sub
в модуле

Код:
Private Declare Function PlaySound Lib "winmm.dll" _
                                   Alias "PlaySoundA" (ByVal lpszName As String, _
                                                       ByVal hModule As Long, ByVal dwFlags As Long) As Long

Sub Звук()
Dim WAVFile As String
    Const SND_ASYNC = &H1
    Const SND_FILENAME = &H20000
    WAVFile = ThisWorkbook.Path & "\Close.wav"
    Call PlaySound(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
End Sub
Что надо поменять?
Вложения
Тип файла: zip newfile.zip (471.5 Кб, 77 просмотров)
SVGuss вне форума Ответить с цитированием
Старый 06.12.2010, 10:06   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
на живых тиках попробовал - не работает.
Все правильно событие SelectionChange здесь работать не будет.
Цитата:
Что надо поменять?
думается нужен другой подход, можно попробовать проверять значения этих ячеек таймером, допустим каждые 5 сек.
Посмотрите во вложении.
Если нужно запускать таймер сразу при открытии книги, раскоментируйте код в модуле Эта книга
Вложения
Тип файла: zip Звук2_таймер.zip (7.9 Кб, 170 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить или изменить текст при появлении ошибок подключения Doctor greid Win Api 0 06.11.2009 09:20
Как воспроизвести звук ? RNT Общие вопросы C/C++ 9 13.08.2009 20:04
RichEdit.Invalidate при появлении формы Gigatrop Общие вопросы Delphi 4 23.06.2009 19:26
Помогите с макромом - поиск заданного значения Alenka2319 Microsoft Office Excel 1 12.06.2008 16:34
Microsoft Office Outlook Событие автоматической отправки писем из папки Исходящие при появлении интернета fandm Софт 0 23.04.2008 10:15