【发布时间】:2019-11-06 05:47:05
【问题描述】:
在一个 excel 项目中,我有一个包含数据的工作表、一个从该工作表中提取数据的用户表单,以及一个用于粘贴用户表单数据的工作表。
我在数据表中创建了一个应该打开用户表单的按钮。作为参考,我的用户表单的名称是 UserForm1。当我单击命令按钮时,我收到 424 错误Object required。我将不胜感激任何帮助或澄清,似乎我的类/实例混淆了?
代码如下:
Private Sub blocksSorter_Click()
Load UserForm
UserForm.Show
End Sub
表单本身在同一个 VBA 项目中,并且是项目中唯一的表单。我的 UserForm1 代码通常是这样的:
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
code
End Sub
Private Sub UserForm_Initialize()
code
End Sub
只有当我这样做时,表单才会显示,并将我的 UserCode subs 从 UserForm 更改为 UserForm1。
Private Sub blocksSorter_Click()
Load UserForm1
UserForm1.Show
End Sub
【问题讨论】:
-
UserForm1.Show实际上是正确的,所以你可以这样。而且你真的不需要先加载它。 -
但是我需要更换我的潜艇吗?
Private Sub UserForm_Initialize()到 Private Sub UserForm1_Initialize()`? -
不,子使用类名......这就是它应该工作的方式。我通常将我的表单命名为
frmTransfer以避免混淆。 -
但在不更改潜艇的情况下,单击按钮时我得到一个
Application-defined or object-defined error -
你不是在“显示”类
UserForm,你正在显示一个名为UserForm1的类的实例