Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Тригер в Excel / 17 сообщений из 17, страница 1 из 1
16.08.2007, 16:06:55
    #34732939
koy
koy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Есть следующая задачка
В ячейку А1 из внешнего приложения экспортируются данные, в ячейки В1 прописано условие ЕСЛИ(А1>10;1;0).
В случае выполнения А1>10 значение ячейки В1 меняется с "0" на "1", нужно что бы после нарушения этого условия значение в ячейки В1 осталось "1".

С Ув. Олег
...
Рейтинг: 0 / 0
16.08.2007, 16:45:52
    #34733103
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
может здесь какие идеи помогут, если нет, уточни, чем дальше помочь
[Excel] сохранение данных импортируемых realtime из другого приложения
...
Рейтинг: 0 / 0
16.08.2007, 18:18:49
    #34733433
koy
koy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
не то,
пусть в ячейке А1 обновляются данные с переодичностью раз в секунду, задачка сводится к ожиданию выполнения условия A1>10.
Т.е. допустим значение стало 11 в результате получаем "1" в ячейке В1. Пусть через секунду значение в ячейки А1 стало 9, условие А1>10 нарушилось, но значение В1 должно остаться "1" и больше не зависеть от ячейки А1.
Файлик во вложении.

С ув. Олег
...
Рейтинг: 0 / 0
16.08.2007, 22:00:54
    #34733710
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
вот такой макрос запустите, только он должен быть в простом модуле, он будет сам следить и перестанет работать, когда условие проверки выполнится
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub StartMyMacro()
    If IsNumeric(Range("A1").Value) Then
        If Range("A1").Value >  10  Then
            Range("b1").Value =  10 
        Else
            Application.OnTime Now + TimeValue("00:00:01"), "StartMyMacro"
        End If
    Else
        Application.OnTime Now + TimeValue("00:00:01"), "StartMyMacro"
    End If
End Sub
...
Рейтинг: 0 / 0
16.08.2007, 23:02:22
    #34733757
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
А если в ячейке останется первоначальная формула, то макрос может иметь следующий вид вид, это конечно не правильно, но всё же.
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub StartMyMacro()
    If Range("b1").Value = 1  Then
            Range("b1").Value =  1 
        Else
            Application.OnTime Now + TimeValue("00:00:01"), "StartMyMacro"
    End If
End Sub
Кстате чтобы не убивать формулу каждый раз в ячейке b1, можно единицу проставлять в ячейке c1
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub StartMyMacro()
    If Range("b1").Value = 1  Then
            Range("c1").Value =  1 
        Else
            Application.OnTime Now + TimeValue("00:00:01"), "StartMyMacro"
    End If
End Sub
...
Рейтинг: 0 / 0
17.08.2007, 00:00:03
    #34733810
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Эта... фантазеры....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
sub worksheet_change(target as range) 
   if target.address="A1" then
       if target.offset( 0 , 1 ).value =  0  then
            if target.value >  10  then
                   target.offset( 0 , 1 ).value =  1 
            end if
        end if
    end if
end sub
Опечатки возможны :)
...
Рейтинг: 0 / 0
17.08.2007, 11:05:30
    #34733932
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
White OwlЭта... фантазеры....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
sub worksheet_change(target as range) 
   if target.address="A1" then
       if target.offset( 0 , 1 ).value =  0  then
            if target.value >  10  then
                   target.offset( 0 , 1 ).value =  1 
            end if
        end if
    end if
end sub
Опечатки возможны :)


На програмные изменения ячейки worksheet_change не реагиркет
...
Рейтинг: 0 / 0
17.08.2007, 11:06:28
    #34733938
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
В слове реагиркет , вместо к - у
...
Рейтинг: 0 / 0
17.08.2007, 18:05:39
    #34735689
koy
koy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Огормное спасибо всем ответившим особенно Deggasad , ваш вариант с записью результата в другую ячейку - то что нужно и задержка по времени тоже :))
...
Рейтинг: 0 / 0
17.08.2007, 18:31:14
    #34735758
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
DeggasadНа програмные изменения ячейки worksheet_change не реагиркетА у меня реагирует. Что я делаю неправильно?

Создаешь чистую книгу, кидаешь в нее мой макрос. Сохраняешь книгу. Потом запускаешь вот этот маленький vbs скриптик и удивляешься:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set oExcel = CreateObject("Excel.Application")
if oExcel is nothing then
	echo "Error"
end if
oExcel.Visible = true

set oWB = oExcel.Workbooks.Open("C:\Book1")
set oRng = oWB.ActiveSheet.Range("A1")
oRng.Value =  5 
WScript.Echo oRng.Text & "/" & oRng.offset( 0 , 1 ).Text

oRng.Value =  12 
WScript.Echo oRng.Text & "/" & oRng.offset( 0 , 1 ).Text
...
Рейтинг: 0 / 0
17.08.2007, 18:32:08
    #34735760
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Ну да, макрос надо чуток подправить конечно, но это мелочи :)
...
Рейтинг: 0 / 0
17.08.2007, 18:44:30
    #34735790
koy
koy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Переключение в одну сторону реализовали :) еще раз спасибо!


Теперь задачка в полном виде.

Нужно возвращать триггер в исходное состояние.
Условие:
В ячейку В4 поступают внешние данные, переключение происходит при выполнение условия - значение в ячейке В4>10, при последующем нарушении условия обратное переключение не происходит, результат "1" в ячейке D5. Реализуется кодом предложенным Deggasad

В ячейку В6 также поступают внешние данные (другие), их используем для возвращения в иходное состояние (запись "0" в ячейку D5). Выполняется при выполнении следующих условий прописанных в ячейке С6.
а) значение в ячейке B6<5;
б) значение в ячейке D5=1 (чтоб не переключать с "0" на "0")
в) значение в ячейке С4=0 (означает что сигнала для переключения на "1" нет)
файлик во вложении


Все это должно работать на вновь открытом листе, в безостановочном режиме по кругу.
Спасибо

С ув. Олег
...
Рейтинг: 0 / 0
17.08.2007, 20:53:24
    #34735941
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
2 White Owl

Извините, но у меня нет в этом опыта, поэтому я не могу судить что так, а что нет, тут Вам уважаемый White Owl должно быть виднее. Я даже не знаю что такое vbs скриптик. Возможно я сделал поспешные выводы, но могу объяснить на чём они основаны. На форуме уже неоднократно обращались за помощю люди, которые утверждали, что событие worksheet_change не отлавливает у них изменения в ячейке Exel, сделанные внешней программой. Я сам неоднократно участвовал в этих обсуждениям и они всегда заканчивались вышепредставленным решением проблемы. Так что если что не так - извиняйте.
...
Рейтинг: 0 / 0
17.08.2007, 21:28:42
    #34735970
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
2 koy

Например так, хотя возможно тебе стоит попробовать с worksheet_change коль White Owl говорит, что оно должно работать ???
...
Рейтинг: 0 / 0
17.08.2007, 23:13:15
    #34736068
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
DeggasadЯ даже не знаю что такое vbs скриптик.Вон тот текст что я показал записываешь в текстовый файл с раширением vbs. Дважды кликаешь по нему мышой и наслаждаешься.

DeggasadВозможно я сделал поспешные выводы, но могу объяснить на чём они основаны. На форуме уже неоднократно обращались за помощю люди, которые утверждали, что событие worksheet_change не отлавливает у них изменения в ячейке Exel, сделанные внешней программой.События и макросы отключать не надо. Тогда все будет работать.
...
Рейтинг: 0 / 0
18.08.2007, 09:23:03
    #34736187
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
White Owl DeggasadЯ даже не знаю что такое vbs скриптик.Вон тот текст что я показал записываешь в текстовый файл с раширением vbs. Дважды кликаешь по нему мышой и наслаждаешься.

Всё сделал ошибка на строке
Код: plaintext
set oRng = oWB.ActiveSheet.Range("A1")
...
Рейтинг: 0 / 0
20.08.2007, 13:35:42
    #34738388
koy
koy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тригер в Excel
Deggasad
Спасибо огромное!!!

С ув. Олег
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Тригер в Excel / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]