是否有可能传递一个范围到一个userform属性?
我试图调整在这里find的代码(第三种方法,因为这是什么似乎被认为是最佳实践),以满足我的需要,但我没有任何运气 – 我到目前为止的代码,更多或从该页面中复制的面值较小的是以下内容:
在表单模块中:
Private calling_cell As Range Property Set range_to_form(ByRef r As Range) Set calling_cell = r End Property Private Sub UserForm_Activate() Debug.Print calling_cell.Address End Sub
在worksheet_change-event中:
Dim frm As ufRegLuft If Not IsUserFormLoaded("ufRegLuft") Then Set frm = New ufRegLuft Else Set frm = VBA.UserForms("ufRegLuft") End If Set frm.range_to_form = Target ufRegLuft.Show
问题:
这是行不通的 – 我得到一个错误的debug.print
,说:“运行时错误'91':对象variables或块variables未设置”。 我必须承认在这一点上我非常难过,我觉得我已经尝试了各种可能的组合,让,得到等。所以,任何人都可以在这里请帮我找出是否有可能通过一个Range
– 对象一个用户表单,如果是的话,告诉我我做错了什么?
您的variablescalling_cell
以frm
forms初始化,而不是在ufRegLuft
中ufRegLuft
将行ufRegLuft.Show
更改为frm.Show
;)
这是testing它的简单方法。
表单模块
Private calling_cell As Range Property Set range_to_form(ByRef r As Range) Set calling_cell = r End Property Private Sub UserForm_Activate() MsgBox calling_cell.Address End Sub
正常模块
Sub ShowFormProp() Dim frm As ufRegLuft Set frm = New ufRegLuft Set frm.range_to_form = Sheet1.Range("A1") frm.Show End Sub
你必须把variables传递给一个子forms,(我相信用户form_Initialize会触发)
我不确定在哪里设置了r,而是在设置范围的表单中创build一个公共子集,在显示表单之前调用它,然后显示如下的表单
在表单模块中:
Private calling_cell As Range public sub range_to_form(ByRef r As Range) Set calling_cell = r End Property Private Sub UserForm_Activate() Debug.Print calling_cell.Address End Sub
在worksheet_change-event中:
Dim frm As ufRegLuft If Not IsUserFormLoaded("ufRegLuft") Then Set frm = New ufRegLuft Else Set frm = VBA.UserForms("ufRegLuft") End If frm.range_to_form r 'Could be "range_to_form r" not above frm.Show