#

Vba, HTMLSelect: FireEvent OnChange oder DispatchEvent
 
 
Ausführen eines onChange Event in einer Webseite, welche durch ein Webbrowser Control und dem HTMLDocument automatisch gesteuert werden soll.
Dabei werde die Fehler ausgefüllt und eine Select-Liste eingestellt.
Nach dem Einstellen eines Wertes in der Select Liste sollte eigentlich ein onChange Event erfolgen.
Der normale Vorgang wäre über FireEvent „OnChange“. Dieser hatte leider keine Auswirkung.
 
Hier die Lösung zum Ausführen eines OnChange Events, wenn in der Webseite ein Select Element durch den vba Code geändert wird:

Dim event_onChange As Object
Set event_onChange = hdoc.createEvent("HTMLEvents")
event_onChange.initEvent "change", True, False
 
vSelect.dispatchEvent event_onChange

 
 
Betrifft: HTML Select und List Elemente, deren Event schon durch eine function(){..} in Javascript beschrieben wurde.
 
 

'---< find TR-child select >---
Dim vSelect As HTMLSelectElement
Set vSelect = getChild_ElementByTag(vTR, "SELECT", "Class", "v-select-select")
vSelect.focus
vSelect.selectedIndex = 1
 
'--< Fire Event OnChange >--
'vSelect.FireEvent "OnChange", vSelect.OnChange() 'does not work
 
Dim event_onChange As Object
Set event_onChange = hdoc.createEvent("HTMLEvents")
event_onChange.initEvent "change", True, False
 
vSelect.dispatchEvent event_onChange
'--</ Fire Event OnChange >--
 
'---</ find TR-child select >---

 
In dieser Anwendung möchte ich eine Select Liste in einer Webseite mit der Position 1 einstellen und anschliessend den Event nach dem Wechseln ausführen.
Leider war die Ausführung des Events onChange mit select_Element.FireEvent „onchange“ erfolglos.
Erst die Ausführung mit CreateEvent während der Laufzeit und anschliessendem dispatchEvent wie oben beschrieben führte zum Erfolg.

print vselect.onchange
function(){var b,c;gCf[b=++hCf]=null;if(iCf[b]=o4f+WYf,zs()){c=$t((iCf[b]=o4f+QLf,d),this,arguments);hCf=b-1;return c}else{var a=$t((iCf[b]=o4f+tCf,d),this,arguments);(iCf[b]=o4f+XYf,a)!=null&&(a=(iCf[b]=o4f+tDf,a).val);c=(iCf[b]=o4f+wCf,a);hCf=b-1;return c}hCf=b-1}
 
vselect.FireEvent "OnChange"
vSelect.FireEvent "onchange",vselect.onchange()
Mobile

.

0123movie.net