【问题标题】:Runtime error '424' object required on vba macrovba 宏需要运行时错误“424”对象
【发布时间】:2018-08-01 11:32:10
【问题描述】:

我收到了

'424 运行时错误;需要对象'

当涉及到下面发布的代码时,在我的 excel 宏上。我正在尝试将 html 用户窗体的内容设置为我从文本文档中解析出来的字符串。

Set wb = WB1.document
Set wb.getElementById("booktitle").Value = book

我也试过了:

Set wb = WB1.document

With wb
    .getElementById("booktitle").Value = book
End With

这是我的 HTML:

 <div class="section"><span>1</span>Book</div>
 <div class="inner-wrap">
     <label>Full Book Title <input id="booktitle" type="text" name="bookTitle" /></label>

WB1 是我的用户表单浏览器

【问题讨论】:

  • wb 的声明(Dim)是什么?什么是 WB1?
  • 错误出现在第一行还是第二行?
  • 这一行肯定没有意义Set wb.getElementById("booktitle").Value = book.Value 不是一个对象,所以删除 Set 关键字(我可以看到你已经尝试过 - 所以这是确认!)

标签: html vba runtime-error getelementbyid


【解决方案1】:

在处理属性时,您有几个选择。 .Value 一个属性,但你使用的是Set命令,它是为对象保留的。

您可以将对象设置为变量,例如:

Dim oBookTitle As Object
Set oBookTitle = wb.getElementById("booktitle")
oBookTitle.Value = book

getElementByID() 返回一个对象 --- .Value 返回或设置对象的值(它是一个属性)。

或者您可以直接使用该属性:

wb.getElementById("booktitle").Value = book   

“是的,我在最初收到您发布的内容时将其更改为尝试设置,无论有没有设置,它都不起作用。”bella98789

我在 HTML 代码中没有看到“值”。您可以尝试使用.innerText.outerText 而不是.Value,看看是否能解决您的问题。

此外,如果您不等待网页完全加载,则您的对象将不可用。出于调试目的添加此行:

If wb.getElementById("booktitle") Is Nothing Then MsgBox "Obj not set"

【讨论】:

  • 是的,我将其更改为在我最初拥有您发布的内容的那天早些时候尝试设置,无论有没有设置,它都不起作用。
  • 我不认为问题出在 .value 或 .innertext 上,因为我可以迭代调试并且结果会在填写用户表单时出现。我只是不知道还有什么会导致这个错误
  • @bella98789 你看到我的第二次更新了吗?添加If语句,看看msgbox是否显示。
  • 那么你能指定哪一行准确地引发了错误吗?因为从您所说的来看,该对象已设置,因为它没有提示 msgbox。 VBE 将停止并以黄色突出显示导致错误的行。
  • wb.getElementById("booktitle").Value = book.这是导致运行时错误的行。 book 是先前从文本文档中解析的字符串,而 wb 是从我的帖子中的行设置的
猜你喜欢
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多