vba - 是否可以将范围传递给用户表单属性?

标签 vba excel

我正在尝试调整代码 found here (第三种方法,因为这似乎被认为是最佳实践),以满足我的需要,但我没有任何运气 - 到目前为止,我或多或少从该页面复制粘贴的代码是以下:

在表单模块中:

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’:未设置对象变量或 With block 变量”。我必须承认我现在很困惑,我觉得我已经尝试了 set、let、get 等的所有可能组合。所以,这里的任何人都可以帮我弄清楚是否可以传递 Range -反对用户表单,如果是,请告诉我我做错了什么?

最佳答案

您的变量calling_cellfrm形式初始化,而不是在ufRegLuft

ufRegLuft.Show 行更改为 frm.Show ;)

这是测试它的简单方法。

表单模块

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

关于vba - 是否可以将范围传递给用户表单属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726596/

相关文章:

excel - Excel 2016 中的 VBA - 在代码中设置打印机设置

javascript - Excel - json数据 - 将某些元素返回到相邻单元格公式/宏

excel - 如何在Excel VBA中获取 'Cell'对象

vba - 根据另一个单元格的数值更改 x 个单元格的颜色

vba - 错误 440 : Method 'Create' of object 'PivotCaches' failed

vba - 使用表单从网站屏幕获取数据到 Excel - VBA

excel - 将 CSV 导入 Excel

java - 如何使用apache poi将excel拆分为多个excel?

excel - VBA - 检查列表对象中的数据是否被过滤

java - apache poi 评论作者错过了