我之前在此链接下找到了这个问题 Userform on excel worksheet dissappears when excel sheet has activeX controls! Why 我发现我错误地接受了答案。我想在这里重新打开这个问题。 我一直在研究一个项目,我计划在其中包含一个包含userform和一些activeX控件的工作表。 activeX控件位于工作表上。我已经使用下面的脚本重复了我面临的问题。子例程完成后,用户窗体在屏幕上不可见。如果我注释掉与OLEObject相关的行,那么我可以在屏幕上看到userform为无模式。问题是,这种行为是否有望?当工作表上有activeX时,为什么userform无法显示?
{
"name": "My extension",
...
"permissions": [
"browsingdata"
"history"
],
...
}
答案 0 :(得分:3)
将ActiveX控件添加到工作表会导致在该例程结束时重置VBA项目,这就是您的表单被卸载的原因。我建议您使用表单控件而不是ActiveX,或者使用OnTime
在重置后显示表单:
Sub DemoFailure()
Dim myOleObj As OLEObject
Dim myRng As Range
Set myRng = ThisWorkbook.Sheets("Sheet1").Range("C4")
ThisWorkbook.Sheets("Sheet1").Select
ThisWorkbook.Sheets("Sheet1").Activate
With ActiveSheet
myRng.RowHeight = 20
Set myOleObj = .OLEObjects.Add(ClassType:="Forms.CheckBox.1", DisplayAsIcon:=False, Left:=myRng.Left + 2, Top:=myRng.Top + 2, Width:=myRng.Width - 4, Height:=myRng.Height - 4)
With myOleObj
'.Object.Caption =
.Name = "CheckBox" & CStr(ii)
End With
End With
Application.OnTime Now(), "ShowIt"
End Sub
Sub ShowIt()
UserForm1.Show vbModeless
End Sub