typeof is 语句和 typename()函数关系

Dim var As Variant  

var = "Hello World"  

Debug.Print TypeName(var) ' 输出 "String"

在这个例子中,TypeName(var) 返回了字符串 "String",但它本身并不提供任何用于条件判断的功能。

TypeOf...Is 表达式

TypeOf...Is 表达式用于在运行时检查一个对象或变量的类型是否与指定的类型兼容。它返回一个布尔值(True 或 False),并且经常用在条件语句中。例如:

vba

复制代码

Dim obj As Object  

Set obj = ThisDrawing.ModelSpace.AddLine(0, 0, 1, 1) ' 假设这是有效的AutoCAD代码  

  

If TypeOf obj Is AcadLine Then  

    ' 如果obj是AcadLine类型(或其子类),则执行这里的代码  

    Debug.Print "对象是一条线"  

Else  

    ' 如果不是,则执行这里的代码  

    Debug.Print "对象不是一条线"  

End If

在这个例子中,TypeOf obj Is AcadLine 检查 obj 是否是 AcadLine 类型(或其子类)的实例,并据此执行不同的代码路径。

替代方案

由于 TypeName 函数仅返回类型名称的字符串表示,并且不能直接用于条件判断,因此没有直接的替代方案可以将 TypeName 用于 TypeOf...Is 的场景。如果你需要根据类型名称进行某些操作,并且 TypeOf...Is 不可用(例如,因为类型不是由 VBA 定义的,或者你需要更灵活的类型检查),你可能需要编写自定义的函数或逻辑来解析 TypeName 返回的字符串,并根据该字符串执行相应的操作。但是,这种方法通常不如 TypeOf...Is 那样直接、高效或安全。

在 AutoCAD VBA 中,通常建议使用 TypeOf...Is 来检查 AutoCAD 对象模型的类型,因为它提供了类型安全性和更好的性能。如果你正在处理非 AutoCAD 对象或需要更复杂的类型检查逻辑,请考虑使用 VBA 的其他功能(如接口、类继承等)来构建更灵活和强大的类型系统。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值