causa probl personali , riprendo ora chiedendo prima scusa ad Anthony47 per non aver risposto alla sua indicazione.
ho provato ad usare la formula che mi hai postato , va bene e funziona , però, il DDE (nella formula)funziona come se fosse sempre attivo indipendentemente dalla immissione dell'1 nella cella, che mi rende disponibile il dato per altre operazioni nel foglio. E' evidente che dovendo compilare elenchi di titoli (strike) piu ampi dei soli 20-25 che la banca mi rende disponibili in real time, questa strada non va bene.
ho verificato invece che inserendo gli strike in moduli ,excel non li riconosce come collegamenti DDE , li vede solo dopo aver lanciato la macro che mi incolla i dati nelle relative celle, quindi in questo modo posso inserire tutti i collegamenti che mi servono senza problemi. di seguito una macro esempio con 5 strike che controllo con dei pulsanti
- Codice: Seleziona tutto
Sub inserisciDDE1700()
Sheets("OptionPage").Select
Cells(32, 24).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19312106?bestBidPrice'"
Cells(32, 25).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19312106?bestAskPrice'"
Cells(33, 24).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19310211?bestBidPrice'"
Cells(33, 25).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19310211?bestAskPrice'"
Cells(34, 24).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19311411?bestBidPrice'"
Cells(34, 25).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19311411?bestAskPrice'"
Cells(35, 24).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19312655?bestBidPrice'"
Cells(35, 25).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19312655?bestAskPrice'"
Cells(36, 24).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19310583?bestBidPrice'"
Cells(36, 25).FormulaR1C1 = "=IWDDE|STOCK_PRICE!'19310583?bestAskPrice'"
End Sub
- Codice: Seleziona tutto
Sub eliminaDDE1700()
Sheets("OptionPage").Select
Range("X32:Y36").ClearContents
End Sub
Ora quello che vorrei è una macro dove elenco tutti gli strike che voglio osservare.Poi devo poter
immettere in un range di celle contigue( es C5:H5, foglio 2 ) un valore (strike)che mi attivi la macro selezionando solo lo strike (valore) immesso nella cella e copiandomi i relativi dati (DDE) nelle celle del foglio(option page) come la macro postata sopra.
tutto sempre visivamente rimanendo sul foglio2 dove ho immesso il valore)
in ultimo se nella cella dove ho imputato il valore(foglio2) , successivamente ne imputo un altro i dati precedenti (DDE scritti nella option page )) vengano cancellati .
Al momento ho adattato questa soluzione per attivate la macro dopo imputazione valore (strike)in un range di celle(istruzione inserita nel foglio di lavoro)
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Cdati = "C5:I5"
If Not Application.Intersect(Target, Range(Cdati)) Is Nothing Then
If Target = 1 Then Call inserisciDDE1900
End If
End Sub
1)con questa istruzione pero , una volta imputato lo strike (foglio2 ,in una cella qualsiasi del range) excel si porta sulla pagina dove inserisce la macro attivata(optionpaga) e resta li senza tornare al foglio che mi interessa(foglio2), devo tornarci io e trovo i dati correttamente leggibili.
2)successivamente digitato un altro valore nella cella, dove ho inserito il primo valore in foglio2, , i dati richiamati dalla precedente richiesta restano attivi nella optionpage, a me serve che si cancellino per limitare lo scarico in DDE dalla banca per non oltrepassare i limiti imposti dalla stessa
questa soluzione , mi sembra , che richieda la preparazione di un modulo/ macro per ogni singolo strike(valore)
oltre a prevedere If target tante volte quanti sono gli strike/moduli /macro che deve cercare , ammesso che sia possibile perche potrbbe essere necessario inserire un 100inaia di If....
spero che riesca a trovarmi delle soluzioni almeno per i punti 1 e 2 per il resto è un