You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中With块变量能否被关键字引用?是否存在指代它的关键字?

VBA With块对象引用的相关问题解答

嘿,我来帮你理清这两个关于VBA With块的疑问:

问题1:With代码块内的变量是否可以通过关键字进行引用?

答案是可以间接实现引用,但没有专门的内置关键字直接指代。With块的核心作用是帮你省略重复输入对象名,直接调用它的成员(比如.DoSomething),但如果需要把这个对象本身作为参数传递给其他方法,VBA并没有提供现成的内置关键字来直接获取这个With块的对象。

问题2:是否存在专门用于指代With块变量的关键字?

很遗憾,VBA里没有这样的内置关键字。你举的例子With New myType: .DoSomething: DoSomethingElse "abc", This, 123: End With无法直接运行,因为这里的This并不指代With块里的myType实例——This在类模块里指代类本身的实例,但在标准模块中它甚至不是合法的关键字。

替代解决方案

不过我们有两种实用的方式来实现类似需求:

  1. 提前将对象赋值给变量
    这是最直接的方法,先把With块的对象存到一个变量里,之后不管是在With块内还是外部,都可以用这个变量传递对象本身:

    Dim myInstance As New myType
    With myInstance
        .DoSomething
        DoSomethingElse "abc", myInstance, 123
    End With
    
  2. 在自定义类中添加Self属性
    如果myType是你自己编写的类模块,可以在类内部添加一个返回自身的属性,这样在With块里就能通过.Self来指代这个对象:
    首先在myType类模块中添加代码:

    Public Property Get Self() As myType
        Set Self = Me
    End Property
    

    然后就可以这样使用:

    With New myType
        .DoSomething
        DoSomethingElse "abc", .Self, 123
    End With
    

内容的提问来源于stack exchange,提问作者Erik på kontoret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:18:36