gpt4 book ai didi

vba - 使用 'Me' 传递对 UserForm 实例的引用时类型不匹配

转载 作者:行者123 更新时间:2023-12-01 01:40:20 25 4
gpt4 key购买 nike

考虑名为 Module1 的 VBA 模块中的以下代码:

Sub StartTest()
Dim frm As UserForm1
Set frm = New UserForm1
frm.Show
End Sub

Sub Notify(fromForm As UserForm1)
MsgBox "Notified."
End Sub

UserForm1 中的以下代码:

Private Sub CommandButton1_Click()
Module1.Notify (Me)
End Sub

当我运行 StartTest 时,表单出现,当我单击按钮时,我在 Module1.Notify (Me) 上收到“类型不匹配”错误CommandButton1_Click() 子。为什么?

如果我将 Module1.Notify (Me) 更改为 Call Module1.Notify(Me)(感谢 @sous2817 指出这一点)或更改为 Module1。通知我,那么我就不会收到错误。那么,为什么当我使用 Module1.Notify (Me) 时会发生这种情况?

最佳答案

将您的按钮代码更改为:

Private Sub CommandButton1_Click()
Call Module1.Notify(Me)
End Sub

似乎在我这边给出了预期的结果......

至于“为什么”,引用这里:http://msdn.microsoft.com/en-us/library/wcx04ck5(VS.85).aspx

具体来说:

You are not required to use the Call keyword when calling a procedure. However, if you use the Call keyword to call a procedure that requires arguments, argumentlist must be enclosed in parentheses. If you use either Call syntax to call any intrinsic or user-defined function, the function's return value is discarded.

我不认为你能得到比这更权威的解释: http://blogs.msdn.com/b/ericlippert/archive/2003/09/15/52996.aspx

关于vba - 使用 'Me' 传递对 UserForm 实例的引用时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288701/

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