I dati che mi arrivano tramite DDE sono i volumi scambiati su un titolo quotato in borsa. Questi dati sono progressivi e cumulativi, ad esempio 1, 10, 15, 16, 20, 30, 31, ecc.
In realtà a me servirebbero solo i parziali in modo da avere le quantità in acquiso e quelle in vendita, quindi solo 1, 9, 5, 1, 4, 10, 1, ecc.
..... questo è il codice che ho scritto e che non funziona
- Codice: Seleziona tutto
Public Sub Connessione()
ActiveWorkbook.SetLinkOnData "DDESrv|TLINK!EU_SHH1_CV", "Foglio1.LinkChangeSC"
Primo_SC = True
End Sub
Public Sub LinkChangeSC()
If Primo_SC = True Then
A_SC = 0 'sono le quantità in acquisto
V_SC = 0 'sono le quantità in acquisto
Tot_SC = Range("G2").Value 'sono le quantità totali. In G2 c'è il link DDE
U_SC = Range("F2").Value 'è l'ultimo prezzo scambiato. In F2 c'è il link DDE
Primo_SC = False
Exit Sub
Else
' Range("G2").Value = "=Excel|Cartel1.xlsx!'R2C4'"
If Range("F2").Value <> U_SC Then
If Range("F2").Value > U_SC Then 'se il prezzo è > del precedente è un acquisto
A_SC = A_SC + (Range("G2").Value - Tot_SC)
Range("H2") = A_SC
Else 'se il prezzo è < del precedente è una vendite
V_SC = V_SC + (Range("G2").Value - Tot_SC)
Range("I2") = V_SC
End If
Else 'se il prezzo è = al precedente verifico il book
If Range("F2") >= Range("D2") Then 'ho un acquisto. In D2 c'è il relativo link DDE
A_SC = A_SC + (Range("G2").Value - Tot_SC)
Range("H2") = A_SC
Else 'ho una vendita
V_SC = V_SC + (Range("G2").Value - Tot_SC)
Range("I2") = V_SC
End If
End If
Tot_SC = Range("G2").Value
U_SC = Range("F2").Value
End If
End Sub
Ho provato a simulare il DDE con l'invio dei valori da un altro foglio di excel, in modo da provare il debug step by step con F8, ed problemi individuati sono:
1) le quantità in acuisto e vendita (variabili V_SC e A_SC) sono sempre = 0. Praticamente vede sempre G2 e Tot_SC dello stesso valore!!!!!! stranissimo. il problema l'ho risolto con quest'itruzione - Range("G2").Value = "=Excel|Cartel1.xlsx!'R2C4'" - dopo il primo else (quella che nel codice è commentata.
E' come se allo scaturire dell'evento OnData excel leggesse il valore di G2 precedente al cambiamento dovuto dal DDE. Come mai' sapete qualcosa in più in merito?
2) l'if - If Range("F2").Value <> U_SC Then - viene completamente ignorato!!!! o meglio, se faccio il debug con F8 funziona tutto perfettamente, mentre nell'esecuzione automatica no e va direttamente all'else di verifica dal book.
lo capisco perchè:
ask bid ultimo volumi
- Codice: Seleziona tutto
D2 E2 F2 G2
6 5 5 100
- Codice: Seleziona tutto
D2 E2 F2 G2
6 5 7 110
- Codice: Seleziona tutto
D2 E2 F2 G2
6 5 6 120
Grazie a tutti per il supporto.