Questa è la prima macro denominata ControlloNotifica.....
*
Private Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" (ByVal lpszName As String, _
ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Const SND_FILENAME = &H20000
Private Const SND_ASYNC = &H1
Private Const SND_LOOP = &H8
Private Const SND_NODEFAULT = &H2
Private Sub Worksheet_Calculate()
ControlloNotifica 'richiama la macro in questione
'sull'evento Calculate del WorkSheet
End Sub
Sub ControlloNotifica()
Set WBook_Attuale = ThisWorkbook
Dim MioTesto As String
MioTesto = "T3_DDE_SERVER|T3_DDE_QUOTE_TOPIC!'CME.CEQFU.81100@last_price'*1"
'WBook_Attuale.SetLinkOnData "Formula di riferimento al titolo", "Macro richiamata"
WBook_Attuale.SetLinkOnData MioTesto, "foglio1.fib"
End Sub---------------------------------------------------------------------
Questo è il collegamento al valore di prezzo in DDE
Ogni variazione di prezzo dovrebbe se non ho capito male lanciare la seconda macro che si chiama Fib
che è quella sotto indicata....
----------------------------------------------------
Sub fib()
Set cella = Foglio1.Cells(4, 2)
NoErrore = Not (IsError(cella))
If NoErrore Then
contratti = Foglio1.Cells(9, 3).Value 'lettura settaggio allarme contratti
contratti2 = Foglio1.Cells(15, 9).Value 'lettura settaggio allarme contratti istantaneo
numeroalert = Foglio1.Cells(9, 4).Value 'lettura settaggio n.alert contratti
inizioday = Foglio1.Cells(11, 2).Value 'lettura settaggio inizio contrattazioni
fineday = Foglio1.Cells(12, 2).Value 'lettura settaggio fine contrattazioni
orainizio = Foglio1.Cells(13, 2).Value ' lettura ora inizio registrazione barra
primariga = Foglio1.Cells(11, 3).Value ' lettura primariga
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progressivo = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
pausa = Foglio1.Cells(9, 2).Value ' lettura pausa
pausacist = Foglio1.Cells(15, 8).Value ' lettura pausa contratti istantaneo
ordine = Foglio1.Cells(17, 3).Value ' lettura Ordine
inserito = Foglio1.Cells(17, 4).Value ' lettura inserimento ordine
tipo = Foglio1.Cells(17, 5).Value ' lettura inserimento ordine
valtreal = Foglio1.Cells(4, 2).Value 'lettura titolo
qtaden = Foglio1.Cells(4, 5).Value 'lettura quantità denaro
preden = Foglio1.Cells(4, 6).Value 'lettura prezzo denaro
qtalet = Foglio1.Cells(4, 7).Value 'lettura quantità lettera
prelet = Foglio1.Cells(4, 8).Value 'lettura prezzo lettera
' variabili per la gestione della 2a serie
orainizio2 = Foglio1.Cells(13, 8).Value ' lettura iniziobarra 2a serie
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga 2a serie
pausa2 = Foglio1.Cells(9, 8).Value ' lettura pausa 2a serie
primariga2 = Foglio1.Cells(11, 9).Value ' lettura primariga serie 2
nr2 = 20
Set cella1 = Foglio1.Cells(17, 2)
NoErrore1 = Not (IsError(cella1))
End If
If NoErrore1 Then
titolo = Foglio1.Cells(17, 2).Value ' lettura titolo da ordinare
Else
titolo = 0
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If inserito = 1 Then
esito = ""
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2) = esito
Foglio1.Cells(18, 3) = esito
End If
If titolo > ordine And inserito = 1 Then
esito = ""
If tipo = -1 Then
vord = "C:\suoni\lasciato.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo
End If
End If
If titolo < ordine And titolo > 0 And inserito = 1 Then
esito = ""
If tipo = 1 Then
vord = "C:\suoni\preso.wav "
Call PlaySound(vord, 0, SND_ASYNC)
esito = "Eseguito"
inserito = 0
Foglio1.Cells(17, 4).Value = inserito
Foglio1.Cells(18, 1) = esito
Foglio1.Cells(18, 2).Value = datatreal
Foglio1.Cells(18, 3).Value = titolo
End If
End If
fibarrotondato = Int(valtreal / 100) * 100
datatreal = Foglio1.Cells(4, 3).Value 'lettura ora
If datatreal < orainizio Then
primariga = 0
Foglio1.Cells(11, 6).Value = 0
progriga = progriga + 1
Foglio1.Cells(20 + progriga, 1).Value = inizioday
Foglio1.Cells(20 + progriga, 2).Value = inizioday + pausa
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga
End If
If datatreal < orainizio2 Then
primariga2 = 0
Foglio1.Cells(11, 11).Value = 0
progriga2 = progriga2 + 1
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = inizioday
Foglio1.Cells(20 + progriga2, nr2 + 2).Value = inizioday + pausa2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet
Foglio1.Cells(13, 10).Value = progriga2
End If
If primariga = 0 Then
orainizio = inizioday
finebarra = inizioday + pausa
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(13, 2).Value = orainizio
Foglio1.Cells(13, 3).Value = finebarra
End If
If primariga2 = 0 Then
orainizio2 = inizioday
finebarra2 = inizioday + pausa2
Foglio1.Cells(13, 8).Value = orainizio2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If datatreal > inizioday Then
primariga = 1
primariga2 = 1
Foglio1.Cells(11, 9).Value = 1
Foglio1.Cells(11, 3).Value = 1
Else
primariga = 0
primariga2 = 0
Foglio1.Cells(11, 3).Value = 0
Foglio1.Cells(11, 9).Value = 0
Foglio1.Cells(11, 6).Value = 0
Foglio1.Cells(13, 6).Value = 0
Foglio1.Cells(15, 10).Value = inizioday
ControlloNotifica
End If
vol1 = Foglio1.Cells(11, 6).Value
vo2l1 = Foglio1.Cells(13, 6).Value
vol2 = Foglio1.Cells(20 + progriga, 3).Value
vo2l2 = Foglio1.Cells(20 + progriga2, nr2 + 3).Value
fibparlato = Foglio1.Cells(9, 6).Value
voltreal = Foglio1.Cells(4, 4).Value 'lettura volume
diff = voltreal - vol1
diff2 = voltreal - vo2l1
oracontratti = Foglio1.Cells(15, 10).Value
If datatreal > oracontratti Then
oracontratti = datatreal + pausacist
Foglio1.Cells(15, 10).Value = oracontratti
Foglio1.Cells(12, 6).Value = voltreal
End If
vol3 = voltreal - Foglio1.Cells(12, 6).Value
Foglio1.Cells(15, 11).Value = vol3
If primariga = 0 Then
oracontratti = inizioday + pausacist ' definizione ora lettura contratti istantaneo
Foglio1.Cells(15, 10).Value = oracontratti
End If
If fibarrotondato <> fibparlato Then
'inserimento prezzo
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
End If
If datatreal > (orainizio + pausa) Then
Sheets("Sistema").Select
Foglio1.Cells(9, 6).Value = Int(valtreal / 100) * 100
'inserimento volume
Foglio1.Cells(11, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga = Foglio1.Cells(13, 4).Value ' lettura prograssivo riga
progriga = progriga + 1
iniziobarra = Foglio1.Cells(13, 3).Value
finebarra = iniziobarra + pausa
If finebarra >= fineday Then
finebarra = fineday
End If
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra
Foglio2.Cells(2, 1).Value = iniziobarra
Foglio2.Cells(2, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 1).Value = iniziobarra
Foglio1.Cells(20 + progriga, 2).Value = finebarra
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio1.Cells(20 + progriga, 4).Value = valtreal
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio2.Cells(2, 3).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
Foglio1.Cells(13, 4).Value = progriga ' lettura prograssivo riga
Foglio1.Cells(13, 2).Value = iniziobarra
Foglio1.Cells(13, 3).Value = finebarra
End If
If datatreal > (orainizio2 + pausa2) Then
If progriga2 > 0 Then
denaro = Foglio1.Cells(20 + progriga2, nr2 + 10).Value
lettera = Foglio1.Cells(20 + progriga2, nr2 + 12).Value
tick = Foglio1.Cells(16, 9).Value
tickfuori = Foglio1.Cells(16, 10).Value
If valtreal > lettera Or valtreal = lettera Then
tickdiff = tick + diff2
End If
If valtreal < lettera And valtreal > denaro Then
tickfuori2 = tickfuori + diff2
tickdiff = tick
Foglio1.Cells(20 + progriga2 + 1, nr2 + 14).Value = diff2
Foglio1.Cells(16, 10).Value = tickfuori2
End If
If valtreal < denaro Or valtreal = denaro Then
tickdiff = tick - diff2
End If
End If
Foglio1.Cells(13, 6).Value = voltreal
voce = "C:\suoni\" + Format(Int(valtreal / 100) * 100) + ".wav"
Call PlaySound(voce, 0, SND_ASYNC)
progriga2 = Foglio1.Cells(13, 10).Value ' lettura prograssivo riga
progriga2 = progriga2 + 1
iniziobarra2 = Foglio1.Cells(13, 9).Value
finebarra2 = iniziobarra2 + pausa2
If finebarra2 >= fineday Then
finebarra2 = fineday
End If
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 1).Value = datatreal
' Foglio1.Cells(20 + progriga2, nr2 + 1).Value = iniziobarra2
' Foglio1.Cells(20 + progriga2, nr2 + 2).Value = finebarra2
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
If diff2 > contratti2 Then
ct = Foglio1.Cells(16, 11).Value
prct = Foglio1.Cells(14, 10).Value
ct1 = ct + diff2
Foglio1.Cells(16, 11).Value = ct1
Foglio1.Cells(20 + progriga2, nr2 + 15).Value = diff2
Foglio1.Cells(prct + 1, 42).Value = datatreal
Foglio1.Cells(prct + 1, 43).Value = valtreal
Foglio1.Cells(prct + 1, 44).Value = diff2
prlotti = prct + 1
Foglio1.Cells(14, 10).Value = prlotti
End If
Foglio1.Cells(20 + progriga2, nr2 + 9).Value = qtaden
Foglio1.Cells(20 + progriga2, nr2 + 10).Value = preden
Foglio1.Cells(20 + progriga2, nr2 + 11).Value = qtalet
Foglio1.Cells(20 + progriga2, nr2 + 12).Value = prelet
Foglio1.Cells(20 + progriga2, nr2 + 13).Value = tickdiff
Foglio1.Cells(16, 9).Value = tickdiff
Foglio1.Cells(13, 10).Value = progriga2 ' scrittura prograssivo riga
Foglio1.Cells(13, 8).Value = iniziobarra2
Foglio1.Cells(13, 9).Value = finebarra2
End If
If vol2 < contratti Then
nalert = 0
Foglio1.Cells(9, 5).Value = nalert
End If
If vol2 > contratti Then
nalert = Foglio1.Cells(9, 5).Value
If nalert <= numeroalert Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
nalert = nalert + 1
Foglio1.Cells(9, 5).Value = nalert
End If
End If
If vol3 > contratti2 Then
vcont = "C:\suoni\contratti.wav "
Call PlaySound(vcont, 0, SND_ASYNC)
End If
If progriga > 0 Then
Foglio1.Cells(20 + progriga, 3).Value = diff
Foglio1.Cells(20 + progriga, 7).Value = valtreal
Foglio2.Cells(2, 8).Value = diff
Foglio2.Cells(2, 6).Value = valtreal
Min = Foglio1.Cells(20 + progriga, 6).Value
Max = Foglio1.Cells(20 + progriga, 5).Value
op = Foglio1.Cells(20 + progriga, 4).Value
If op = 0 Then
op = valtreal
Foglio1.Cells(20 + progriga, 4).Value = op
Foglio2.Cells(2, 3).Value = op
End If
If Min = 0 Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
If Max = 0 Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If
rminmax = Max - Min
Foglio1.Cells(20 + progriga, 8).Value = rminmax
Foglio2.Cells(2, 7).Value = rminmax
MediaRange = Foglio1.Cells(20 + progriga, 9).Value
Foglio2.Cells(3, 7).Value = MediaRange
If valtreal > Max Then
Foglio1.Cells(20 + progriga, 5).Value = valtreal
Foglio2.Cells(2, 5).Value = valtreal
End If
If valtreal < Min Then
Foglio1.Cells(20 + progriga, 6).Value = valtreal
Foglio2.Cells(2, 4).Value = valtreal
End If
End If
If progriga2 > 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 3).Value = diff2
Foglio1.Cells(20 + progriga2, nr2 + 7).Value = valtreal
Min2 = Foglio1.Cells(20 + progriga2, nr2 + 6).Value
Max2 = Foglio1.Cells(20 + progriga2, nr2 + 5).Value
fibr1 = Foglio1.Cells(20 + progriga2, 38).Value
fibr2 = Foglio1.Cells(20 + progriga2, 40).Value
' Foglio1.Cells(17, 44).Value = fibr1
'Foglio1.Cells(18, 44).Value = fibr2
op2 = Foglio1.Cells(20 + progriga2, nr2 + 4).Value
If op2 = 0 Then
op2 = valtreal
Foglio1.Cells(20 + progriga2, nr2 + 4).Value = op2
End If
If Min2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
If Max2 = 0 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
rminmax2 = Max2 - Min2
Foglio1.Cells(20 + progriga2, nr2 + 8).Value = rminmax2
If valtreal > Max2 Then
Foglio1.Cells(20 + progriga2, nr2 + 5).Value = valtreal
End If
If valtreal < Min2 Then
Foglio1.Cells(20 + progriga2, nr2 + 6).Value = valtreal
End If
End If
End Sub