Excel工作表上的用户窗体消失Excel工作表有ActiveX控件时! 为什么

我是这个论坛的新手。 请多多包涵。
我一直在一个项目中,我打算有一个工作表,其中包含一个用户窗体和一些ActiveX控件。 activeX控件在工作表上。 我用下面的脚本重复了我正面临的问题。 当子程序完成时,用户窗体在屏幕上不可见。 如果我注释掉与OLEObject有关的行,我可以在屏幕上看到用户窗体是无模式的。 问题是,这是行为的预期? 为什么用户表单在工作表上有activeX时无法显示?

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 UserForm1.Show vbModeless End Sub 

此代码适用于我(假设“UserForm1”存在于同一个模块中)。 这是你的代码的一个非常粗糙的重新创build,因为我不知道你的问题到底是你想要达到什么目的而不是让框和窗体同时显示:

 Sub Macro2() Dim myOleObj As OLEObject Dim myRng As Range Dim ws As Worksheet Set ws = ActiveSheet Set myRng = ws.Range("C4") myRng.RowHeight = 20 ws.OLEObjects.Add "Forms.CheckBox.1", _ Left:=myRng.Left + 2, _ Top:=myRng.Top + 2, _ Width:=myRng.Width - 4, _ Height:=myRng.Height - 1 _ Set myOleObj = ws.OLEObjects(1) With myOleObj '.Object.Caption = .Name = "CheckBox" & CStr(ii) End With UserForm1.Show vmModeless End Sub