在 VBA 中根据动态数组函数的输出创建数组

问题描述 投票:0回答:1

我刚刚订阅了 ExcelPriceFeed.com 并可以访问他们的动态数组函数。

其中之一是 EPF.Yahoo.OptionsChain.ExpiryDates

在 Excel 单元格中使用时它可以工作...

现在我想在 VBA 子程序中调用这个动态数组函数,并将日期列表放入数组中(之后我将循环遍历数组并为每个日期创建一个新选项卡)。 这可能吗? 我写的代码是...

Dim wsUser As Worksheet
Set wsUser = ActiveWorkbook.ActiveSheet
Dim sgTicker As String
'sgTicker = InputBox( _
'        "Please input a ticker symbol to extract dates for..." _
'        , "Input a Ticker Symbol" _
'        , "META" _
'        )
sgTicker = "META"
Dim a As Variant
a = wsUser.Evaluate("EPF.Yahoo.OptionsChain.ExpiryDates(""" & sgTicker & """)")

运行代码后,变量a包含错误2042。

有人知道如何让它发挥作用吗?

否则,我将不得不编写一些代码来创建临时工作表并循环访问工作表中的结果。
单元格的定义名称为“A1#”。我如何循环遍历这个范围?

arrays excel vba
1个回答
0
投票

您遇到的问题是由于 VBA/Excel 的同步性质和您正在使用的函数的异步性质造成的。

您可以尝试该函数的同步版本,因为这将等待返回结果。

将代码的最后一行替换为:

a = wsUser.Evaluate("EPF.Yahoo.VBA.OptionsChain.ExpiryDates(""" & sgTicker & """)")

您正在使用的软件 Excel Price Feed 有很多可以通过 VBA 使用的同步函数,更多详细信息请参见:https://www.excelpricefeed.com/userguide/excel-vba-functions-yahoo-finance

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.