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

Excel 如何将范围对象传递给VBA中的属性?,excel,userform,vba,Excel,Userform,Vba,虽然经过了彻底的搜索,但我并没有通过属性将范围传递给userform。我得到了所需的错误对象。代码在userform中,参数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 这应该是userform中的

虽然经过了彻底的搜索,但我并没有通过属性将范围传递给userform。我得到了所需的错误对象。代码在userform中,参数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

这应该是userform中的代码

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

仍然没有更改,同时我怀疑您是否可以使用属性在VBA中传递范围对象。什么是不更改。您可以使用属性来传递范围对象。我的意思是,我仍然会得到相同的错误,运行时错误91,对象变量未设置。对不起,但是您从哪里得到此错误?您以前没有提到运行时错误!如果你使用全局变量prange,你就走错了方向。然后看看为什么使用默认实例通常不是一个好主意。