Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用vba写入单元格的字符串值不正确_Vba_Excel - Fatal编程技术网

使用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),我已经清除了所有的格式。我还试着复制到其他单元格,但得到了相同的结果。我有问题,所以我正在编辑问题。