Нужна функция в макросе Excel для потоковой передачи цен на акции в реальном времени

#excel #vba

#excel #vba

Вопрос:

Нужна помощь с этой функцией макроса в Excel для прямой трансляции цен на акции

От T11 до T32 цены потоковые, значение меняется каждую секунду От U11 до U32 будут иметь значения, передаваемые пользователем, от V11 до V32 разница в ценах потоковой передачи и значении, передаваемом пользователем = (U15-T15) Теперь начинается неприятная часть…

От X11 до X32 имеет общий расчет

Если значения больше -1999, у меня есть эта функция ниже, но каждый раз, когда она превышает 2000, она продолжает подавать звуковой сигнал на 2100, 2200, тем самым увеличивая счетчик, я хочу, чтобы это прекратилось, если значения не упадут ниже -1999, а затем снова вернутся к -2000, должен быть звуковой сигнал, и счетчик должен увеличиться на 2

То же самое касается значений, превышающих -2500 и -3500

Ниже приведена функция

 Private BlnAboveHundred As Boolean
Private IntCounter As Integer
Private IntCounter2 As Integer
Private IntCounter3 As Integer



Function StopCounterAF2(RngMeasure As Range)
    
    If RngMeasure.Value < (-1999) Then
        If BlnAboveHundred = False Then
            IntCounter = IntCounter   1
            Call PlaySound("c:windowsmediaStop1Filled.wav", _
            0, SND_ASYNC Or SND_FILENAME)
            
            BlnAboveHundred = True
            
            Else
            
            BlnAboveHundred = True
            
            
        End If
        
    Else
    
        BlnAboveHundred = False
        
        
        
    End If
    
    StopCounterAF2 = IntCounter
    IntCounter = 0
End Function

Function StopCounterAG2(RngMeasure As Range)
    
    If RngMeasure.Value < (-2499) Then
        If BlnAboveHundred = False Then
            IntCounter2 = IntCounter2   1
            Call PlaySound("c:windowsmediaStop2Filled.wav", _
            0, SND_ASYNC Or SND_FILENAME)
            
            BlnAboveHundred = True
            
            Else
            
            BlnAboveHundred = True
            'IntCounter = 0
            
        End If
        
    Else
    
        BlnAboveHundred = False
        
    End If
    
    StopCounterAG2 = IntCounter2
    
End Function

Function StopCounterAH2(RngMeasure As Range)
    
    If RngMeasure.Value < (-2999) Then
        If BlnAboveHundred = False Then
            IntCounter3 = IntCounter3   1
            Call PlaySound("c:windowsmediaStop3Filled.wav", _
            0, SND_ASYNC Or SND_FILENAME)
            
            BlnAboveHundred = True
            
            Else
            
            BlnAboveHundred = True
            'IntCounter = 0
            
        End If
        
    Else
    
        BlnAboveHundred = False
        
    End If
    
    StopCounterAH2 = IntCounter3
    
End Function
  

Комментарии:

1. Этот код в некоторой степени работает хорошо, если не заполнены нижеприведенные ячейки. как только значения в ячейке ниже, например, для X11 имеют значение -2000, а для X13 — значения -1450, ячейка счетчика AF11 увеличится на 1, но ячейка AF13 также увеличит счетчик на 1, этого не должно произойти, поскольку его значение не увеличилосьна -2000

2. В чем ваш вопрос? Вы отладили свой код? Вы застряли с проблемой VBA или с вашим алгоритмом?

3. Я считаю, что с помощью VBA проблема, с которой я сталкиваюсь, похожа на то, что я упоминал в комментариях выше, как только значения в ячейке, например, для X11 имеют значение -2000, а для X13 — значения -1450, ячейка счетчика AF11 увеличится на 1, но ячейка AF13 также увеличивает счетчик на 1, чего не должно произойти, поскольку его значениене увеличились на -2000