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

时间:2015-03-09 11:31:14

标签: excel vba excel-vba runtime-error

我在Excel 2007 VBA中遇到问题,我试图在UserForm中的框架上将visible属性设置为false。

Userform1.Frame1.Visible = False

尝试设置属性时,excel会抛出错误:

  

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

     

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

我已经研究了这个,我发现的唯一一件事就是可能与无法控制焦点的事情有关。在我的情况下,这不是真的,因为有一个按钮可用于将焦点放在另一帧上。另一个框架设置为在隐藏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。弹出一个msgbox,当用户单击是时,它将打开Frame2Picture One

这是Frame2。此框打开,禁用所有文本框/组合框。按钮控件“编辑”已启用。 Picture Two

2 个答案:

答案 0 :(得分:0)

我宁愿先让所有的框架看不见(也不要关心它们的位置和尺寸);之后,唯一相关的框架可以显示。 如果sub在userform的macromodule中,你可以使用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

答案 1 :(得分:-3)

我在excel 2010中测试过代码工作正常(我没有excel 2007)

请尝试以下代码。

Private Sub Frame1_Click()

End Sub

Private Sub TextBox1_Change()

End Sub

 Private Sub UserForm_Initialize()

    Me.Frame1.Visible = False
End Sub