Office 365 中的 VBA 用户定义函数

Posted

技术标签:

【中文标题】Office 365 中的 VBA 用户定义函数【英文标题】:VBA User-defined functions in Office 365 【发布时间】:2021-05-24 15:33:06 【问题描述】:

某些 MS Office 版本对用户定义的函数有限制。 具体来说,UDFs cannot write to the excel worksheet outside the cells that call the function。

我的问题:此限制是否也适用于 Office 365?

【问题讨论】:

Office 365 中的 Excel 与以前的版本没有根本区别。 如果您想要实现某些特定的目标,那么描述它可能会很有用 - 有人可能会对替代方法提出建议。 您的问题的答案是“是”。限制在 VBE 中,您使用哪个版本都没有关系。它适用于所有 excel 版本。但是正如@TimWilliams 提到的,请描述您的目标,有人可能会提出一些替代方法。 【参考方案1】:

同样的限制适用于所有 Office 版本。到目前为止,没有重大更改,尤其是对于 Office 365 应用程序。

【讨论】:

【参考方案2】:

如果您使用动态溢出,您可以更改多个单元格:

Public Function Stooges() As Variant
    Dim arr(1 To 3) As Variant
    
    arr(1) = "Larry"
    arr(2) = "Moe"
    arr(3) = "Curly"
    
    Stooges = arr
End Function

请注意,在 Excel 365 中,数组输入不是必需的。

【讨论】:

【参考方案3】:

谢谢大家,

答案是“不”。 Excel 365 提供了更大的灵活性。

@Gary'sStudent 的回答让我寻找“溢出”和“动态数组”。 这些是 Excel 365 中添加的功能。以下是参考:

Spilling

Custom functions and dynamic arrays

谢谢!

【讨论】:

UDF 不能直接写入单元格,但它们可以返回数组,并且数组值将进入相邻的单元格。在 Excel 365 之前,需要使用 CTRL+SHIFT+ENTER 将此类函数作为数组公式输入。

以上是关于Office 365 中的 VBA 用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章

我想在 Excel 中使用 VBA 从 Office 365 Outlook 邮件中读取 SenderAddress?

Excel VBA 到 PPT 在 Office 365 64 位中不起作用

【OFFICE 365】Power Query 多工作簿合并

Exchange/Office365 自动处理脚本:常用函数

使用PowerShell 导出Exchange中的用户中用户信息到Office 365

为office 365用户上传头像