使用vba写入单元格的字符串值不正确

时间:2017-07-06 19:47:16

标签: excel vba excel-vba

我有一个字符串变量价格。

Dim price As String

price正在存储值301.20。但是当我尝试使用

将其写入单元格时
ThisWorkbook.Sheets(4).Cells(1,1) = price

写作22。

注意:我调试了它,在这种模式下,我发现它正在向单元格写入正确的值(301.20)。 但是当我运行它时,它打印的值不正确。

编辑

看一下下面的代码

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False
ie.navigate "url1"
Set htmldoc = ie.document

ie.navigate "url2"
Set htmldoc1 = ie.document

Dim element As Object
Set element = htmldoc1.getElementById("lastPrice")

Dim price As String
price = element.innerText

ThisWorkbook.Sheets(4).Cells(1, 1) = price

url1 有一个ID lastPrice 的元素。它正在打印此元素的innertext

它应该做什么? 来自 url2 的ID lastPrice 的搜索元素并打印其innertext

在调试模式下,它会打印出适当的值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

定义枚举

Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum

添加以下代码

ie.navigate url2

'Added this

Do While ie.READYSTATE <> READYSTATE_COMPLETE
Application.StatusBar = "Trying to go to url2 ..."
DoEvents
Loop

Set htmldoc1 = ie.document

现在因为我们已经命令在READYSTATE_COMPLETE之前执行事件,所以它导航到url2然后将HTML文档带入htmldoc1。

由于