我是这个论坛的新手。 请耐心等待。
我一直在做一个项目,我计划在其中有一个包含用户窗体和一些 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"存在于同一个模块中)。这是对您的代码的非常粗略的重新创建,因为我从您的问题中不知道除了同时显示框和表单之外,您还想实现什么:
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