ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   trouble with onchange event (https://www.excelbanter.com/excel-programming/418330-trouble-onchange-event.html)

Dudely

trouble with onchange event
 
I'm not sure where to go with this question so I thought I'd try this
group.

I'm having some trouble with the following VBA code. The varTags
variable is sometimes empty, and sometimes it has what it's supposed
to have. I always use the same set of pages to test.

I thought maybe the page needed time to load, so I added in
Do While obIe.Busy & Do While obIe.readyState <4
DoEvents loops after the onchange call, but they had no effect.

The onchange call does in fact load the expected page, it's the line
of code afterwards that doesn't always work. Any ideas?

Thank you

Public Function submitDropDownData(IeDoc As Object, obIe As Object,
elementToSelect As Long, elementValue As String, ID As String)
Dim el As Object
Dim varTags as Variant
Dim tagType as String

tagType="td"

Set el = IeDoc.getElementsByName(ID)
el(0).children(elementToSelect).Selected = True
el(0).children(elementToSelect).Value = elementValue
el(0).onchange

Set varTags = IeDoc.getElementsByTagName(tagType)

Andym

trouble with onchange event
 
In this code, the varTags variable would be a collection of <td tags. Are
there no td tags on the page you are using?

"Dudely" wrote:

I'm not sure where to go with this question so I thought I'd try this
group.

I'm having some trouble with the following VBA code. The varTags
variable is sometimes empty, and sometimes it has what it's supposed
to have. I always use the same set of pages to test.

I thought maybe the page needed time to load, so I added in
Do While obIe.Busy & Do While obIe.readyState <4
DoEvents loops after the onchange call, but they had no effect.

The onchange call does in fact load the expected page, it's the line
of code afterwards that doesn't always work. Any ideas?

Thank you

Public Function submitDropDownData(IeDoc As Object, obIe As Object,
elementToSelect As Long, elementValue As String, ID As String)
Dim el As Object
Dim varTags as Variant
Dim tagType as String

tagType="td"

Set el = IeDoc.getElementsByName(ID)
el(0).children(elementToSelect).Selected = True
el(0).children(elementToSelect).Value = elementValue
el(0).onchange

Set varTags = IeDoc.getElementsByTagName(tagType)


Dudely

trouble with onchange event
 
Yes, there are in fact quite a few <td tags on the page. I've since
determined that sleeping for a length of time resolves the problem as
it gives the page enough time to load. At this point, what I don't
understand is why "Do While obIe.Busy & Do While obIe.readyState <4"
don't work.

Someone else in another group stated "Quite obvious, there is no
direct HTTP request here."

So it's "quite obvious". Unfortunately, the obnoxious *******
couldn't be troubled to provide a solution, no doubt because that's
"quite obvious" as well.

Perhaps someone else could provide the obvious solution (that's better
than the one I figured out) to someone as dense as myself.

Thank you







On Oct 9, 8:00*pm, AndyM wrote:
In this code, the varTags variable would be a collection of <td tags. *Are
there no td tags on the page you are using?



"Dudely" wrote:
I'm not sure where to go with this question so I thought I'd try this
group.


I'm having some trouble with the following VBA code. *The varTags
variable is sometimes empty, and sometimes it has what it's supposed
to have. *I always use the same set of pages to test.


I thought maybe the page needed time to load, so I added in
Do While obIe.Busy & Do While obIe.readyState <4
DoEvents loops after the onchange call, but they had no effect.


The onchange call does in fact load the expected page, it's the line
of code afterwards that doesn't always work. *Any ideas?


Thank you


Public Function submitDropDownData(IeDoc As Object, obIe As Object,
elementToSelect As Long, elementValue As String, ID As String)
Dim el As Object
Dim varTags as Variant
Dim tagType as String


tagType="td"


Set el = IeDoc.getElementsByName(ID)
el(0).children(elementToSelect).Selected = True
el(0).children(elementToSelect).Value = elementValue
el(0).onchange


Set varTags = IeDoc.getElementsByTagName(tagType)- Hide quoted text -


- Show quoted text -



Andym

trouble with onchange event
 
It is possible that your code ("Do While obIe.Busy & Do While obIe.readyState
<4") is being executed before the HTTP request.

Try this before your code:

Do Until obIe.Busy Or obIe.readyState < 4
DoEvents
Loop

This will make sure your code will wait until the HTTP request begins. Your
code could get stuck in this loop though, so you would want to add in a time
limit to exit out of the loop.


"Dudely" wrote:

Yes, there are in fact quite a few <td tags on the page. I've since
determined that sleeping for a length of time resolves the problem as
it gives the page enough time to load. At this point, what I don't
understand is why "Do While obIe.Busy & Do While obIe.readyState <4"
don't work.

Someone else in another group stated "Quite obvious, there is no
direct HTTP request here."

So it's "quite obvious". Unfortunately, the obnoxious *******
couldn't be troubled to provide a solution, no doubt because that's
"quite obvious" as well.

Perhaps someone else could provide the obvious solution (that's better
than the one I figured out) to someone as dense as myself.

Thank you







On Oct 9, 8:00 pm, AndyM wrote:
In this code, the varTags variable would be a collection of <td tags. Are
there no td tags on the page you are using?



"Dudely" wrote:
I'm not sure where to go with this question so I thought I'd try this
group.


I'm having some trouble with the following VBA code. The varTags
variable is sometimes empty, and sometimes it has what it's supposed
to have. I always use the same set of pages to test.


I thought maybe the page needed time to load, so I added in
Do While obIe.Busy & Do While obIe.readyState <4
DoEvents loops after the onchange call, but they had no effect.


The onchange call does in fact load the expected page, it's the line
of code afterwards that doesn't always work. Any ideas?


Thank you


Public Function submitDropDownData(IeDoc As Object, obIe As Object,
elementToSelect As Long, elementValue As String, ID As String)
Dim el As Object
Dim varTags as Variant
Dim tagType as String


tagType="td"


Set el = IeDoc.getElementsByName(ID)
el(0).children(elementToSelect).Selected = True
el(0).children(elementToSelect).Value = elementValue
el(0).onchange


Set varTags = IeDoc.getElementsByTagName(tagType)- Hide quoted text -


- Show quoted text -





All times are GMT +1. The time now is 04:31 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com