隐藏框架时无法设置可见属性错误

我在Excel 2007 VBA中有一个问题,我试图在UserForm框架上将可见属性设置为false。

Userform1.Frame1.Visible = False 

当试图设置属性时,Excel会抛出错误:

运行时错误“-2147418113(8000ffff)”:

无法设置Visible属性。 意外的调用方法或属性访问。

我已经研究过这个问题,唯一能够发现的地方就是没有掌握重点的问题。 在我的情况下,这是不正确的,因为有一个button可以把焦点放在另一个框架上。 另一个框架被设置为在Frame1被隐藏之前可见。

有没有其他人遇到过这个问题,或者可以帮助我理解是什么导致这个错误?

编辑 – 代码添加

 Public Sub fOpenFrame(uf As UserForm, strName As String) Dim con As Control Dim i As Long i = 5 Application.ScreenUpdating = False With uf.Controls(strName) .Top = 38.15 .Left = 120 .Height = 400 .Width = 565 .Visible = True End With For Each con In uf.Controls If TypeName(con) = "Frame" And con.Name <> strName And InStr(con.Name, "Menu") < 1 _ And con.Name <> "frmNewAbsenceButton" And con.Name <> "frmExistingAbsenceButton" Then With con .Visible = False 'Error occurs here' .Top = 5 .Left = i .Height = 20 .Width = 20 End With i = i + 25 End If Next con Application.ScreenUpdating = True End Sub 

编辑2 – 添加的图片

这是第一帧Frame1 。 msgboxpopup,当用户点击yes时,会打开Frame2图片一

这是Frame2 。 打开此框,禁用所有文本框/combobox。 button控件“编辑”已启用。 图片二

我宁愿先把所有的框架都隐藏起来(而不是关心它们的位置和大小)。 之后,唯一相关的框架可以被看见。 如果sub在用户窗体的macros模块中,则可以使用Me(“Frame4”)并避免使用“uf as userform”参数。

 Public Sub fOpenFrame(uf As UserForm, strName As String) for each it in uf.controls if typename(it)="Frame" then it.visible=false next With uf.Controls(strName) .Top = 38.15 .Left = 120 .Height = 400 .Width = 565 .Visible = True End With End Sub 

我在Excel 2010中testing的代码工作正常(我没有Excel 2007)

请尝试下面的代码。

 Private Sub Frame1_Click() End Sub Private Sub TextBox1_Change() End Sub Private Sub UserForm_Initialize() Me.Frame1.Visible = False End Sub