我试图改编代码found here(第三种方法,因为这似乎被认为是最佳实践),以满足我的需求,但我没有任何运气 - 迄今为止的代码,更多或更少的复制pastaed从该网页如下:是否可以将范围传递给用户窗体属性?
在形式模块:
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事件:
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’:对象变量或带块变量未设置”。我必须承认在这一点上我非常难过,我觉得我已经尝试了各种可能的组合,让,得到等等。所以,任何人都可以在这里请帮我弄清楚是否有可能通过一个Range
-object一个用户表单,如果有的话,告诉我我做错了什么?
你能不能,只是为了调试,不先试试,看看是否calling_cel范围对象是没有什么做调试之前。打印。可能会出现代码在范围设置之前调用并且在范围设置为有效值之后正常工作的情况。也许你可以通过调用堆栈窗口来查找源代码,以查看未设置范围时要编码的触发器。 – Tom