VBA IsMissing 函数如何在幕后工作?

Posted

技术标签:

【中文标题】VBA IsMissing 函数如何在幕后工作?【英文标题】:How does the VBA IsMissing function work under the hood? 【发布时间】:2021-11-29 12:13:11 【问题描述】:

根据文档:

IsMissing 不适用于简单数据类型(例如 Integer 或 双倍)因为,与变体不同,它们没有规定 “缺失”标志位

但是在tagVARIANT 结构中,我看不到任何关于可以设置的标志的信息,我想知道 vartype 是否像嵌入 ByRef 和 VT_BYREF 一样嵌入此信息(VT_RESERVED 是什么意思?)但是我不确定。

【问题讨论】:

【参考方案1】:

“missing”变体是一个 VARIANT,其中 vt 成员 (VARTYPE) 设置为 VT_ERRORscode 成员设置为 DISP_E_PARAMNOTFOUND (0x80020004)。

【讨论】:

链接,DISPARAMS 结构不是仅适用于所有 args 都是变体的 callbyname 等后期绑定代码吗? @Greedo - IsMissing 函数定义:“返回一个布尔值,指示是否已将可选 Variant 参数传递给过程。”。 VT_ERROR + DISP_E_PARAMNOTFOUND 是特殊的“缺失”变量值。 (BTW .NET 当然和这个docs.microsoft.com/en-us/dotnet/framework/interop/…一致)

以上是关于VBA IsMissing 函数如何在幕后工作?的主要内容,如果未能解决你的问题,请参考以下文章

Meteor 的反应在幕后是如何工作的?

指向 2D 数组的指针如何在幕后工作?

React 钩子 useRef() 如何在幕后工作?那个参考到底是啥?

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

如何在工作表中调用 VBA 函数?

用Excel使用VBA时显示运行错误5,错误调用参数,程序特别简单,如图,求问哪里出错了