gpt4 book ai didi

excel - 变体但不是对象

转载 作者:行者123 更新时间:2023-12-02 09:55:20 24 4
gpt4 key购买 nike

如果我知道一些数据将是一个对象,但我不知道是什么类型,我可以将其传递给函数或例程,如下所示:

Sub mySubExpectingAnObject(myVal As Object)

哪个更明确

Sub mySubExpectingAnObject(myVal As Variant)

即使两者都有效,也应该是首选

如果我知道数据位不是一个对象,但可以是其他任何东西(LongDouble String 等),是否有任何方法可以将参数变暗为非对象。例如

Sub mySubExpectingNotAnObject(myVal As NotObject)

因为如果我在这里使用Variant,将不会有自动反对象检查。是否存在这样的类型;可以专门封装任何非对象数据类型的一种吗?除了

之外还有其他解决方法吗
If isObject(myVal) Then Err.Raise 5

或类似的?

最佳答案

我不明白使用 Variant 并抛出无效的过程调用或参数运行时错误 5 有什么问题,这几乎是字面上的 表示“此过程使用无效参数调用”,给定 IsObject(theParameter) 返回 True

Variant 的存在专门是为了解除编译时类型约束,以便 VBA 可以处理外部类型,例如 IUnknown 等:您无法使用Variant对其强制执行任何类型的编译时检查 - 根据定义Variant 的类型仅在运行时解析。

解决这个问题的惯用方法是为你的过程及其参数使用好的、有意义的名称。不过,很难用您所拥有的示例来推荐任何内容。

不存在“变体但不是对象”类型,并且您不能使用 Variant 并期望在编译时进行任何类型的类型验证。

关于excel - 变体但不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50493652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com