Vedo che sei andato avanti da solo, bene...
Comunque, la risposta al problema del Set la trovi nell'help on line del vba:
L'help-on-line del vba ha scritto: In genere, se viene utilizzata l'istruzione Set per assegnare a una variabile un riferimento a un oggetto, per tale variabile non verrà creata nessuna copia dell'oggetto. Verrà invece creato un riferimento all'oggetto. Più variabili oggetto possono fare riferimento allo stesso oggetto. Dato che queste variabili sono dei riferimenti e non copie dell'oggetto, qualsiasi modifica dell'oggetto verrà apportata anche alle variabili che si riferiscono all'oggetto
Quindi mycoll_tab non e' una variabile ma solo un pointer agli elementi dell' IE.document.
Se sai che il document puo' venire rinfrescato allora devi prelevare da ie.document quel che ti serve e memorizzarlo in vere variabili.
Quanto al secondo problema (quello che hai risolto), premesso che puoi indirizzare quell'elemento col suo ID= "SelectedLine", trattandosi di un Select con relativo menu ad opzioni non puoi lavorare sul "Value" ma devi impostare il valore da selezionare.
Questo alla fine io l'ho fatto tramite:
- Codice: Seleziona tutto
myValIndex = 4 '<<< La voce da selezionare, da 0 in avanti
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123 '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")
La parte "= 123" nella riga marcata *** non so a che serve, ma se mi limito a dare il comando allora l'editor mi segnala "Errore di compilazione / Previsto: =". Boh...
Rimane il problema che se avviene un refresh tra la riga in cui assegno un valore e la riga del FireEvent allora l'evento non modifca l'impostazione del select; a naso mi sembrerebbe che ripetendo i comandi dovrebbe funzionare:
- Codice: Seleziona tutto
myValIndex = 4 '<<< La voce da selezionare, da 0 in avanti
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123 '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")
'Repetita iuvant:
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123 '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")
O la prima o la seconda volta dovrebbe funzionare...
Ciao