使用vba写入单元格的字符串值不正确
我有一个字符串可变价格使用vba写入单元格的字符串值不正确,vba,excel,Vba,Excel,我有一个字符串可变价格 Dim price As String price正在存储一个值301.20。但是当我试图使用 ThisWorkbook.Sheets(4).Cells(1,1) = price 它正在写22 注意:我调试了它,在此模式下,我发现它正在向单元格写入正确的值(301.20)。 但当我运行它时,它打印的值是错误的 编辑: 请看下面的代码 Set ie = CreateObject("InternetExplorer.Application") ie.Visible = F
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
神奇的是,在调试模式下,它正在打印适当的值
如何解决此问题?我找到了解决此问题的方法 定义枚举
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
ie.url2
”他补充道
在ie.READYSTATE READYSTATE\u完成时执行此操作
Application.StatusBar=“正在尝试转到url2…”
多芬特
环
设置htmldoc1=ie.document
现在,因为我们已经命令在READYSTATE_完成之前执行事件,所以它会导航到url2,然后将HTML文档转换为htmldoc1
谢谢您的代码中出现了其他问题,但我们没有足够的信息来调试您的问题(只有一行代码)。如果price的值真的是301.20,很难看出它如何将“22”写入A1。有没有可能它正在写一个不同于您认为的工作表?就像Tim说的,仅仅用一行代码调试是很困难的。可能是将值放在不同的位置,也可能是单元格A1的格式。我没有发现任何将301.20转换成22的格式,但是有一些格式使某些数字看起来不同。尝试在其他单元格中复制和粘贴值以进行双重检查。此外,您可能需要考虑用数字代替字符串。我认为这不会解决您的问题,但它可以帮助您避免代码中其他地方出现任何问题,具体取决于您想做什么。我认为将单元格格式设置为“dd”可能会实现这一点,但将301.20格式设置为27(对于1900-10-27)。我还试着切换到1904年的日期系统,但结果是28(对于1904-10-28),我已经清除了所有的格式。我还试着复制到其他单元格,但得到了相同的结果。我有问题,所以我正在编辑问题。