我在Excel中有一个项目。我有一个带子加载的模块,用Excel表中的数据填充ActiveForm,该表被标记为进入相应的表单。其思想是,无论哪个表单处于活动状态,我都可以调用Load并从Excel表中获取数据。
我正在尝试使用这段简单的代码来获取活动窗体的名称,就像我在许多示例中看到的那样
Debug.Print Screen.activeform.Name但是,找不到Screen对象。我收到“变量未定义”错误。这是可以通过引用添加的东西吗?我已经到处找过了。或者,我可以将对"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中有数据,并且用户打开该表单,则该表单是预先填充的。
我可以包括一个屏幕截图,但它只是一堆标签和输入框。
谢谢。
发布于 2018-03-14 04:48:38
通过让函数将表单作为参数接受,我可以让它正常工作:
Public Sub LoadData(frmLoad As Object)并简单地将我传递给函数:
LoadData Me也许这是糟糕的设计,但它是有效的。因此,我不需要在每个表单中都包含LoadData函数。
哑光
https://stackoverflow.com/questions/49264413
复制相似问题