Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
СЛУЧМЕЖДУ() вызывает ошибку, При быстром потоке данных перестает работать.
 
Здравствуйте! Пытаюсь создать звуковой "сигнализатор", который реагирует на определенную конфигурацию данных поступающих через DDE. И для того, чтобы один и тот же звук "не доставал", решил разбавить его несколькими. К примеру совпали условия и должен проиграть один из 3х звуков. Номер звука определяется случайно. Но беда в том, что у меня достаточно плотный поток данных и случайный генератор чисел вызывает ошибку, так как он реагирует на каждое изменение.
Использую  СЛУЧМЕЖДУ().  Без DDE потока работает норм., но если включить dde то возникает ошибка #ИМЯ.   Пробовал и такой вариант ЕСЛИ(A2=1;СЛУЧМЕЖДУ(1;3);0) Всё равно вызывает ошибку, так как за то время, что действует условие (A2=1), а это пара секунд, генератор (из-за быстрого потока данных) выходит из строя.

Господа знатоки! Может есть такой способ, при котором числа генерируются строго раз в секунду или "по требованию", а не реагируют на каждое изменение в ячейках или в книге?
Изменено: CabancheG - 14.10.2015 20:35:46
Оптимизация и ускорение работы Excel c DDE., Несколько вопросов.
 
Здравствуйте! Хочется услышать от вас несколько советов и ответов на вопросы по оптимизации и ускорению работы Excel.
Ситуация следующая:  
В файл  поступают данные (через DDE) из 2х разных источников. Для каждого источника выделена своя страница. Данные занимают немного (одни и те же ячейки пару раз в секунду меняют значения) Всё занимает примерно 1/2 экрана. Имеет ли смысл перевести оба источника на один лист?
Далее самые важные исходные данные с обоих листов поступают на "основной" лист, где проводятся вычисления, в основном сравнения, (к примеру если > то... ) т.е. никаких супер формул, максимум только сложение-вычитание, все просто. Но таблицы с данными разбросаны у меня по экрану (для удобства восприятия), между ними расстояние в 1 столбец или в 1-2 ряда, всё вместе занимает 1.5 экрана. Имеет ли смысл скомпоновать эти таблицы "впритык"? Имеет ли смысл убрать всякие закрашивания, рамочки и т.п.?  Имеет ли смысл и данные с обоих источников и вычисления разместить на одном листе? Ускорит ли это работу хотя бы на пол секунды?  
Ну и в целом, хотелось бы услышать советы и хитрости если таковые имеются.

P.S. Excel 2003.
"Самопроверка" макроса на предыдущее срабатывание.
 
Добрый день! Имеется макрос, который проигрывает звук при определенных условиях. Условия эти действуют 1-2 секунды, но за это время он успевает включить звук несколько раз . Как сделать так, чтобы макрос после первого пересчета и срабатывания, оставлял о себе след в таблице, например в ячейку [A1] вносил цифру 1. В условиях он проверяет эту ячейку и если она больше ноля, условия не выполняются и следовательно повторно звук не будет включен.
Подскажите пожалуйста, какие строки нужно добавить, чтобы в ячейку [A1] он поставил 1.

Код
Sub NextTime()
    Application.OnTime Now + TimeSerial(0, 0, 1), "NextTime"
  
      
     If [A2] > 0 And [A1] < 1 Then
          Call PlayMusic(Sound1)
' ставим 1 в ячейку [A1]
    End If
 End Sub
Макрос записи цифры в ячейку при условии
 
Здравствуйте!  Как доработать данный макрос, чтобы он при выполнении условий ставил цифру в ячейку?
Код
Sub NextTime()
    Application.OnTime Now + TimeSerial(0, 0, 1), "NextTime" 

     If [A2] > 0 And [A1] < 1 Then
          Call PlayMusic(Sound1)
'И вот тут мы ставим 1 в ячейку [A1]
    End If
 End Sub
Изменено: CabancheG - 09.10.2015 15:08:49
Чем же так плохи итерации и зацикленные ячейки?, Объясните, пожалуйста, несведущему.
 
Здравствуйте! Работаю с данными поступающими через DDE.  В программировании не особо силен, поэтому вместо макросов и текстбоксов использую систему зацикленных ячеек, например для хранения последних 5-10 значений  изменяющейся ячейки или для фиксации времени получения новых данных. Всего таких зацикленных и взаимосвязанных ячеек около 50.  Но тут на форуме весьма не однозначное отношение к такому способу хранения инф. В связи с чем у меня ряд вопросов.  Чем этот способ так плох?
Влияет ли это на скорость выполнения операций? На производительность и загруженность ПК?  
Макрос автонажатия alt + f4, Как реализовать?
 
Здравствуйте!  Подскажите пожалуйста, как можно преобразовать данный макрос (см. внизу). Что бы он если выполнены условия, автоматом нажимал alt+f4 чтобы закрылась программа, которая открыта (не excel, excel свернут) .
Код
 Sub NextTime()
    Application.OnTime Now + TimeSerial(0, 0, 1), "NextTime" 'вызов каждую 5 секунд

   If [A2] > 0 Then
         ' нажать альт+ф4
    End If
 End Sub
[ Закрыто] Как остановить на пару секунд макрос?, Чтобы он не включал по нескольку раз подряд звуковой сигнал.
 
Здравствуйте!  Имеется макрос, который при изменении 0 на 1 (буквально на секунду) , начинает проигрывать звуковой сигнал.  Но проблема в том, что за эту секунду он успевает включить его несколько раз.  Может есть способ сделать так, что бы звук играл только один раз? (самый простой наверное сделать "тишину" вначале самого звукового файла) Но может есть нечто  вроде функции sleep или т.п. ?
Код
Sub NextTime()
    Application.OnTime Now + TimeSerial(0, 0, 1), "NextTime" 

        If [A1] > 0 Then
          Call PlayMusic(SoundFile)
    End If
 End Sub
Изменено: CabancheG - 06.10.2015 12:11:01
Преобразовать значение ИСТИНА на 0 или 1
 
Здравствуйте!  Почему не преобразовывается значение функции? Да и вообще никак не хочет взаимодействовать.    Например в A1:A4 стоят цифры, а в B2 стоит ЕЧЁТН(A1), а в C1  =ЕСЛИ(B1="ИСТИНА";1;0).   Но почему то в любом случае, независимо истина или нет, в С1 всегда ноль. Как это исправить?
Как Privat Sub'ы перевести в обычные макросы с названиями?, чтобы потом вызывать их через RUN или CALL
 
Здравствуйте! У меня на самом деле много вопросов и большинство ответов я нашел в поиске. Но есть одно жирное НО. Почти всё, что нужно мне сделать в Excel делается через Privat sub макросы. Мне такой вариант не подходит, так как работаю через DDE и отсутствует ручной ввод данных, да и пересчет нужных ячеек нужно делать раз в 1-2 секунды. И что бы не создавать по несколько тем, я решил сократить кол-во вопросов до одного. (надеюсь, что решение данного вопроса, поможет мне решить все остальные)
Как Privat sub'ы перевести в обычные макросы с названиями ?  
Макрос "время последнего изменения в ячейке", Сил больше нет...
 
Здравствуйте! Уже несколько дней никак не могу решить проблему.  Имеются 2 ячейки, в которыx периодически (наверное раз в 5-10 минут) меняются числа. В результате кучи операций и формул.  Не в ручную!
Имеется код.  

 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("J1:J2")) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, 1)         'вводим в соседнюю справа ячейку дату
               .Value = Now
               .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
           End With
            
       End If
    Next cell

End Sub


Но он считывает изменения только при ручном вводе!   Как сделать чтобы данный макрос учитывал "не ручной" ввод и пересчитывался каждые 5 секунд? И в соседней ячейке писал время последнего изменения.

И еще такой вот вопрос. Как перевести эти безымянные Private Sub  в обычные макросы с именем, которые можно вызывать (из других макросов например).

как здесь например:
Код
Sub NextTime()
    Application.OnTime Now + TimeSerial(0, 0, 5), "NextTime" 'вызов каждую 5 секунд
    iP = [N1]
    iG = [N2]
     iK = [K14]
    iE = [K15]
        If iP > iG And iK > iE Then
          Call PlayMusic(SoundFile)
    End If
'        If [p5] > [g2] Then
'          Call Звук
'    End If
 End Sub


P.S.:  Excel 2003
Изменено: CabancheG - 26.09.2015 23:43:56
Страницы: 1
Наверх