如何将范围对象传递给 VBA 中的 属性?

How do I pass a range object to a property in VBA?

虽然彻底搜索,但我没有通过 属性 将范围传递到用户表单。我得到了所需的错误对象。代码在用户窗体内部,参数 prange 是全局的。任何帮助将不胜感激。谢谢

Public Property Get MyRng() As Range

Set MyRng = r1

End Property

Public Property Set MyRng(ByRef prange As Range)

Set r1 = prange

End Property

这应该是用户表单中的代码

Option Explicit
Dim mRng As Range
Public Property Get myRng() As Range
    Set myRng = mRng
End Property

Public Property Set myRng(nRg As Range)
    Set mRng = nRg
End Property

举个简单的例子

Option Explicit

    Sub Test()
    Dim frm As UserForm1
    Dim rg As Range

        Set frm = New UserForm1
        Set frm.myRng = Range("A1")
        Set rg = frm.myRng
        Debug.Print rg.Address

    End Sub