Vba Userform没有';单击工作表后才会显示

Vba Userform没有';单击工作表后才会显示,vba,excel,Vba,Excel,我通过点击按钮加载一个用户表单,在我点击工作簿之前,这个用户表单不会显示在前面。Excel图标一直闪烁,当我单击工作表时,闪烁停止,用户窗体出现 可能的原因是什么。这很奇怪,因为相同的代码适用于其他用户表单 FormattingForm.StartUpPosition = 0 FormattingForm.Left = Application.Left + (0.5 * Application.Width) - (0.5 * NewReportEnt

我通过点击按钮加载一个用户表单,在我点击工作簿之前,这个用户表单不会显示在前面。Excel图标一直闪烁,当我单击工作表时,闪烁停止,用户窗体出现

可能的原因是什么。这很奇怪,因为相同的代码适用于其他用户表单

FormattingForm.StartUpPosition = 0
FormattingForm.Left = Application.Left + (0.5 * Application.Width) 
                      - (0.5 * NewReportEntry.Width)
FormattingForm.Top = Application.Top + (0.5 * Application.Height) 
                     - (0.5 * NewReportEntry.Height)    
FormattingForm.Show

这真的取决于你如何称呼你的表格。在您的情况下,最便宜、最脏的解决方案如下:

Public Sub TestMe()

    Dim FormattingForm As New UserForm1
    FormattingForm.StartUpPosition = 0
    FormattingForm.Left = Application.Left + (0.5 * Application.Width)
    FormattingForm.Top = Application.Top + (0.5 * Application.Height)
    FormattingForm.Show

End Sub
UserForm1
是VBEditor中表单的名称:

如果您不喜欢脏兮兮,并且了解一些OOP,请尝试以下方法之一:


或者在VBA中使用旧的肮脏技巧,在表单中编写代码并在那里调用。

这可能与打开另一个应用程序有关。对我来说,是Word女士

当我在打开Word之后打开表单时,Excel会做出如上所述的反应。它会闪烁,我只会在单击MS Excel后看到表单

Set WdDoc = WdApp.Documents.Open(WdDocPathOpen, ReadOnly:=True)
frmLeaseType.Show
当我在打开Word之前启动表单时,它将按预期运行

frmLeaseType.Show
Set WdDoc = WdApp.Documents.Open(WdDocPathOpen, ReadOnly:=True)

请尝试
FormattingForm.Show vbModal
代码在哪里?在类中、模块中、工作表中或表单内部?尝试使用以下代码将表单强制到前面:FormattingForm.ZOrder 0。@Vityata代码位于模块内部。只需将3条定位语句注释一次,只留下show,会发生什么?它说,用户定义的类型不是defined@Sid29-这是怎么说的&在哪里说的?很抱歉不清楚,它在新的UserForm1变量上说的declaration@Sid29这将是表单类的名称,即
formatingform
。你不应该复制/粘贴答案,所以在不理解发生了什么的情况下。。。也就是说,我建议在编写VBA时避免将
作为新的
和拆分声明与赋值,特别是如果您是VBA新手的话。@Sid29-现在我明白了。
UesrForm1
是表单的名称。看看吧,我已经更新了答案。它是VBEditor中新窗体的默认名称。