从 vba 代码调用 Excel 的工作表函数

Posted

技术标签:

【中文标题】从 vba 代码调用 Excel 的工作表函数【英文标题】:Calling Excel's worksheet function from vba code 【发布时间】:2017-12-14 19:24:11 【问题描述】:

使用 worksheetfunction 的方法,我可以从 vba 代码中调用很多 excel 的函数,而无需重新发明***。 不幸的是,并非所有功能都可用,但其他简单功能可以在 vba 库下找到。 现在我需要使用两个函数:

address() indirect()

但是两个都不能作为 vba 或 worksheetfunction 的方法

(这里有什么可用的:https://msdn.microsoft.com/en-us/library/office/ff822194(v=office.14).aspx)

使用编辑器上的对象浏览器我找不到这些功能... 我该怎么办?

【问题讨论】:

请显示代码,我们可以根据上下文回答。 Range.Address 是你要找的。​​span> IF() 也不可用,因为它具有直接的 vba 等效项。 代替 INDIRECT():Range("youraddressstring") 【参考方案1】:

INDIRECT 是一种解析字符串的方法,这可以在 VBA 中轻松完成。 ADDRESS 也可以作为 Range 对象的成员找到。这就是它们不可用的原因。

【讨论】:

【参考方案2】:

这是一个小例子:A1 包含文本 B1B1 包含文本 C1包含公式:=INDIRECT(A1)

运行这个宏:

Sub UsingEvaluate()
    MsgBox Evaluate("INDIRECT(A1)")
End Sub

将产生:

【讨论】:

以上是关于从 vba 代码调用 Excel 的工作表函数的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 调用 VBA 函数 - 在选定工作表上的选定列中查找

用户定义的函数在 vba 中工作正常,而从显示“值”错误的 excel 表调用时

从工作表将二维数组传递给 VBA/UDF 函数

从 Excel 调用 Access VBA 函数

从自定义 VBA 函数(非子函数)写入 Excel 工作表

Excel VBA 用户定义函数:在工作表函数中获取单元格被调用