gpt4 book ai didi

VBA从另一个用户窗体调用一个用户窗体中的子例程

转载 作者:行者123 更新时间:2023-12-04 03:12:55 25 4
gpt4 key购买 nike

我正在使用 Excel VBA。我有两个用户表单:ClientInfo 和 ClientSearch

在 ClientSearch 中,我搜索 Excel 工作表以列出具有相同姓氏的所有客户。从那里,我选择我想要的客户端(通过突出显示列表中的名称并单击命令按钮 cmdOpenClientInfo)并确定它们的 ClientID(也在工作表中)。然后我想将此 ClientID 传递给 ClientInfo 表单,以便使用工作表中的相关数据填充此表单上的所有文本框:

在 ClientSearch 表单中编码:

Private Sub cmdOpenClientInfo_Click()

Dim ClientID As Integer

ClientID = textSrchClientID.value

'user msgbox to check to make sure I get the correct ClientID ... and I do

msgbox(ClientID)

Me.Hide

frmClientInfo.show

Call frmClientInfo.PopulateClientInfo(ClientID) 'this is where it fails

End Sub

在 ClientInfo 表单中编码:

Sub PopulateClientInfo(ClientID As Integer)

'this is where I would populate the text field

End Sub

例程总是卡在调用 frmClientInfo.PopulateClientInfo(ClientID)

在上述情况下,我收到运行时错误“424”需要对象。

我尝试了本论坛中提供的各种解决方案,但没有找到解决方案。

最佳答案

您对 frmClientInfo.show 的调用处于 Modal 模式,因此在新表单关闭之前不会执行下一条语句。您可以尝试使调用成为非模态的:

frmClientInfo.show Modal:=False

但这可能是其他问题的根源。最好继续在模态模式下工作,但 它显示之前将 ClientID 参数传递给表单。

1- 像这样修改 frmClientInfoPopulateClientInfo 方法:

Public Sub PopulateClientInfo(ClientID As Integer)
'....
'populate The fields, then:
'....
Me.Show ' <-- form shows itself after populating its fields
End Sub

2- 删除 ClientSearch 表单中对 frmClientInfo.show 的调用。

关于VBA从另一个用户窗体调用一个用户窗体中的子例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43552379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com