2009-06-23 72 views
1

我不确定上面是否有正确的术语,但我想要做的是调用一个将函数从Excel文件传递给它的Javascript函数,所以函数将运行并列出下一个文本框中的项目,从而允许我在该文本框中选择正确的条目,然后选择最终的框。如何将可变参数传递到使用Excel VBA的Javascript函数

这里是我的代码,这样的作品,如果我不把变量放入其中: Call .Document.parentWindow.execScript("FillVendorNames('MyText')", "javascript") 如果我把任何变量,而不是“MYTEXT”,我得到一个运行时错误: Call .Document.parentWindow.execScript("FillVendorNames(cCode)", "javascript") Call .Document.parentWindow.execScript("FillVendorNames(.document.all.ComCode)", "javascript") 变量在代码中声明的较早,我可以使用立即窗口检查值是否正确,它们都是正确的,但我仍然遇到运行时错误。

我想要做的是使用自动填充下拉列表的现有功能,基于在原始下拉列表中选择的选项。 如果我在第一个下拉列表中选择MyText,则FillVendorNames会在下一个下拉列表中提供供应商列表,以供我选择。 然后我可以在下一个函数中输入下一个选项,它会选择第三个选项,但是这都是基于创建第二个下拉列表的第一个函数。 第一个列表在页面上自动加载,但第二个列表不是,所以我不能从中选择一个选项。 任何人都可以帮忙吗? 谢谢。

+0

我想我们会需要你正在试图做一个什么位的更多信息。你传递给FillVendorNames的是什么样的变量? Excel文件位于何处?我从未见过从VBA执行Javascript。你的系统如何设置? – CoderDennis 2009-06-23 14:50:59

+0

嗨丹尼斯, 页面上有很多代码,我不想透露太多的工作告诉我,我不应该。 excel文件位于My Docs中。我传递给FillVendorNames的变量取自使用单元格(X,2)的Excel文件以选择要发送的适当变量。 不确定你指的是什么设置? (在这个东西的初学者位)。 该函数完全按照它应该如果我只使用文本输入'Mytext',但如果我尝试使用该变量它不起作用。 – DOS 2009-06-23 15:34:53

回答

1

可能存在两个问题:

  • VBA不串
  • 内与他们的价值观取代变量名

例子:

Dim x as String 
x = "Hello world!" 

Msgbox x 
// shows "Hello world!" 

Msgbox "x" 
// shows "x" 
  • Call永远不需要(因为你可以只是省略括号),并可能导致问题

例子:

Call Msgbox("x") 
// is almost exactly the same as 
Msgbox "x" 

只需使用:

With foo 
    // do stuff 
    .Document.parentWindow.execScript "FillVendorNames(" & cCode & ")", "javascript" 
    // do more stuff 
End With 
相关问题