debugging 自定义VBA监 windows 口中显示的自定义类的值

bkhjykvo  于 2023-08-06  发布在  Windows
关注(0)|答案(1)|浏览(128)

我正在使用VBA(特别是Microsoft Access VBA)。我已经编写了几个自定义VBA类,并使用VBE的“监 windows 口”在调试期间查看值。我想在.NET语言中创建一个类似于ToString()的函数,它将类的自定义字符串打印到监 windows 口,这样我就不必展开每个子对象。请参阅下面的图像,我想自定义字符串出现.

的数据
我尝试添加一个名为Value的GET属性,还尝试了一个ToString函数。两个都不管用。有人知道这是否可能吗?注意:我不想做this

67up9zun

67up9zun1#

创建以下示例类MyClass

Option Explicit

Property Get MyProperty() As String
    MyProperty = "Some String"
End Property

字符串
将其导出为MyClass.cls并在记事本中打开。它看起来像:

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "MyClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Property Get MyProperty() As String
    MyProperty = "Some String"
End Property


Attribute Value.VB_UserMemId = 0添加到MyProperty(),使此属性成为默认属性。

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "MyClass"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

Property Get MyProperty() As String
    Attribute Value.VB_UserMemId = 0
    MyProperty = "Some String"
End Property


保存文件并导入VB编辑器(不要复制粘贴,使用导入!).
Attribute Value.VB_UserMemId = 0在VBE中不可见。但是如果你现在创建一个类的新示例,你可以调用类本身来访问默认属性:

Option Explicit

Public Sub Example()
    Dim cl As MyClass
    Set cl = New MyClass
    
    Debug.Print cl  ' this returns the default property now
    Stop
End Sub


而且它也会显示在手表窗口中(但遗憾的是它不会在本地窗口中显示值。
x1c 0d1x的数据

相关问题