找不到屏幕对象

时间:2018-03-13 19:29:14

标签: vba excel-vba excel

我在Excel中有一个项目。我有一个带有子Load的模块,用Excel表格中的数据填充ActiveForm,该表格被标记为进入相应的表单。我的想法是,无论哪个Form处于活动状态,我都可以调用Load并从Excel表中获取数据。

我正在尝试使用这个简单的代码来获取活动表单的名称,就像我在很多示例中看​​到的那样

Debug.Print Screen.activeform.Name

但是,无法找到Screen对象。我收到“Variable Not Defined”错误。  这可以通过引用添加吗?我搜索了高低。或者,我可以将对“Me”的引用传递给模块吗?

以下是我在模块中填写的代码,用于填充用户打开的任何形式:

Public Sub Load()

Dim rw As Long

Set wb = ThisWorkbook
Set wsInputs = wb.Worksheets("Inputs")
Set loInputs = wsInputs.ListObjects("tInputs")

With loInputs
    For rw = 1 To .DataBodyRange.Rows.Count
        If .ListColumns("Form").DataBodyRange.Rows(rw) = screen.activeform Then
            screen.activeform.Controls(.ListColumns("Control Name").DataBodyRange.Rows(rw).Value) _
            = .ListColumns("Value").DataBodyRange.Rows(rw).Value
        End If
    Next rw
End With

End Sub

不同的表单只是输入到文本和组合框中的不同类别的数据,这些文本和组合框从表单到Excel读取,如果Excel中有数据并且用户打开该表单,则预先填充它。

我可以包含截图,但它只是一堆标签和输入框。

感谢。

1 个答案:

答案 0 :(得分:1)

我能够通过让函数接受表单作为参数来实现这一点:

Public Sub LoadData(frmLoad As Object)

简单地将我传递给函数:

LoadData Me

也许这是糟糕的设计,但它的工作原理。因此,我不需要在每种形式中包含LoadData函数。

马特