我在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中有数据并且用户打开该表单,则预先填充它。
我可以包含截图,但它只是一堆标签和输入框。
感谢。
答案 0 :(得分:1)
我能够通过让函数接受表单作为参数来实现这一点:
Public Sub LoadData(frmLoad As Object)
简单地将我传递给函数:
LoadData Me
也许这是糟糕的设计,但它的工作原理。因此,我不需要在每种形式中包含LoadData函数。
马特