Здравствуйте! Вот такая у меня задача. В таблицу на разные листы в колонки K и L вводятся с внешнего источника данные. В ячейках F2 и F3 идет их подсчет, в ячейке F7 идет подсчет индекса по формуле. И вот сама задача.
Если значение индекса переходит из отрицательного в положительное и становиться более 1% то ячейка меняет цвет с красного на зеленый. И наоборот на красный с зеленого если значение индекса падает и становиться менее -1%. При этих условиях выдаются отличительные друг от друга звуковые сигналы, которые можно отключать на соответствующей вкладке (от куда поступил сигнал). Также нужно чтоб таблички с разных листов дублировались на первом листе.
Возможно ли такое сделать, а то все перелапатил уже. Заранее благодарен за помощь. Так как файл более 100к, то залил сюда http://rghost.ru/1011946 2.2 Мб
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}
Спасибо большое! Т.е. можно ячейки с первого листа просто скопировать на нужные листы? Я так сделал работает. Надеюсь сами ячейки править уже не надо?
Пример со звуком что-то не открывает, но можно так, привязываясь к процентам: На лист клиента: Private Sub Worksheet_Calculate() If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)" End Sub
{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Пример со звуком что-то не открывает, но можно так, привязываясь к процентам: На лист клиента: Private Sub Worksheet_Calculate() If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)" End Sub{/post}{/quote}
{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Пример со звуком что-то не открывает, но можно так, привязываясь к процентам: На лист клиента: Private Sub Worksheet_Calculate() If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)" End Sub{/post}{/quote}
Сейчас с цветом все сделаю. Потом звуком займусь. Обязательно отпишусь. Спасибо за помощь.
{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели? http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote} Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...
{quote}{login=Hugo}{date=18.02.2010 04:53}{thema=Re: Re: Re: Re: }{post}{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели? http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote} Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...{/post}{/quote}
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны.
{quote}{login=Hugo}{date=18.02.2010 04:53}{thema=Re: Re: Re: Re: }{post}{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели? http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote} Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...{/post}{/quote}
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны.
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны. Верхний пост что-то без цитирования получился.
Можно чек-бокс на листе поставить и проверять его. Может надо не пересчёт обрабатывать, а изменение листа, а то у меня сейчас и на открытие других файлов звук пошёл, я и не понял сразу :)
{quote}{login=Hugo}{date=18.02.2010 05:08}{thema=Re: Re: Re: Re: Re: Re: }{post}Можно чек-бокс на листе поставить и проверять его. Может надо не пересчёт обрабатывать, а изменение листа, а то у меня сейчас и на открытие других файлов звук пошёл, я и не понял сразу :){/post}{/quote}
Там есть другие значения которые меняются. Поэтому надо на изменение одной ячейки листа, а так у меня там оркестр будет. :) А листов таких десяток. По инету ищу, пока нет, может ни кому не надо было.
Вернее так, отслеживать надо диапазон, т.к. в процентах сама формула не меняется:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)" End Sub
Но тогда, если данные меняются по формуле, работать не будет. Только если заносить кодом. Сейчас проверю...
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}
По формуле цвет меняется при условии <-0.01 на красный и при >0.01 на зеленый. В промежутке он белый, а нельзя ли так чтобы когда ячейка красная то и остается красной пока не будет >0.01 и если была зеленая то и остается зеленой до значения <-0,01
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}
По формуле цвет меняется при условии <-0.01 на красный и при >0.01 на зеленый. В промежутке он белый, а нельзя ли так чтобы когда ячейка красная то и остается красной пока не будет >0.01 и если была зеленая то и остается зеленой до значения <-0,01
Спасибо! Вот только я не понял по какому правилу они созданы, как мне такое сделать в другой книге? В условном форматировании нет ни одного правила в файле.
Спасибо! Вот только я не понял по какому правилу они созданы, как мне такое сделать в другой книге? В условном форматировании нет ни одного правила в файле.{/post}{/quote}
Открой редактор VBA (AltF11) и на листе 1 процедура обработки событий:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then If IsNumeric(Target.Value) Then If Target.Value < -0.01 Then With Target.Offset(0, 1).Interior .ColorIndex = 49 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ElseIf Target.Value > 0.01 Then With Target.Offset(0, 1).Interior .ColorIndex = 4 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ' Else ' Target.Offset(0, 1).Interior.ColorIndex = xlNone End If Else Target.Offset(0, 1).Interior.ColorIndex = xlNone End If Target.Select End If End Sub
Здесь диапазон "A:A" можно указать любой другой на листе где установлена эта процедура, условие в строке If Target.Value < -0.01 Then и ElseIf Target.Value > 0.01 Then и наконец окрашивается соседняя ячейка (Offset(0,1))
With Target.Offset(0, 1).Interior .ColorIndex = 49 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With
{quote}{login=VovaK}{date=18.02.2010 10:39}{thema=}{post}Открой редактор VBA (AltF11) и на листе 1 процедура обработки событий:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then If IsNumeric(Target.Value) Then If Target.Value < -0.01 Then With Target.Offset(0, 1).Interior .ColorIndex = 49 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ElseIf Target.Value > 0.01 Then With Target.Offset(0, 1).Interior .ColorIndex = 4 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ' Else ' Target.Offset(0, 1).Interior.ColorIndex = xlNone End If Else Target.Offset(0, 1).Interior.ColorIndex = xlNone End If Target.Select End If End Sub
Здесь диапазон "A:A" можно указать любой другой на листе где установлена эта процедура, условие в строке If Target.Value < -0.01 Then и ElseIf Target.Value > 0.01 Then и наконец окрашивается соседняя ячейка (Offset(0,1))
With Target.Offset(0, 1).Interior .ColorIndex = 49 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With{/post}{/quote}
Заменил диапазон А:А на ячейку, у меня там формула =ЕСЛИ(F3=0;"";(F2/F3-1)) И вот с формулой не хочет работать, а если туда вбивать цифры то все нормально. Как заставить считать?
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("F14")) Is Nothing Then Range("F14").FormulaLocal = "=IF(F3=0;"";(F2/F3-1))" If IsNumeric(Target.Value) Then If Target.Value < -0.01 Then With Target.Offset(2, 0).Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ElseIf Target.Value > 0.01 Then With Target.Offset(2, 0).Interior .ColorIndex = 4 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With ' Else ' Target.Offset(2, 0).Interior.ColorIndex = xlNone End If Else Target.Offset(2, 0).Interior.ColorIndex = xlNone End If Target.Select End If End Sub
Нужно правильно выбирать событие Change - изменение значение в ячейке SelectionChange - изменение выбора ячейки Сalculate - пересчет листа (очевидно то что Вам нужно)
{quote}{login=Hugo}{date=18.02.2010 05:54}{thema=Re: Re: Re: Re: Re: Re: Re: Re: Re: }{post}Вернее так, отслеживать надо диапазон, т.к. в процентах сама формула не меняется:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)" End Sub
Но тогда, если данные меняются по формуле, работать не будет. Только если заносить кодом. Сейчас проверю...{/post}{/quote}
Вот так прописал. Но получается, что звук идет при каждом изменении диапазона K:L. А нельзя ли так, чтобы звук раздавался только один раз когда попадает в зону первого условия или второго и следующий раз тогда когда будет выход из зоны и новый вход? Или может тогда лучше сделать кнопку отключения и включения макроса? Правда тут нужно две кнопки, одна на зону -, другая на +.
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "d:\WINDOWS\Media\chimes.wav" & """)" If [f7] >= 0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "d:\WINDOWS\Media\chimes.wav" & """)" End Sub