运行时错误'1004':无法设置OLEObject类的enabled属性

时间:2013-04-20 21:13:38

标签: excel excel-vba vba

当我在combobox1发生更改时设置combobox2.enable = True时收到上述错误消息。

Private Sub ComboBox1_Change()

   If ComboBox1.Value = "One Session" Then
      ComboBox2.Enabled = True
   End If
End Sub

有人可以告诉我出了什么问题吗?感谢

3 个答案:

答案 0 :(得分:0)

确保每个组合框的名称是ComboBox1和ComboBox2。如果你重命名它们,可能会出现这样的错误。

另外如果你因为某种原因禁用了combobox2(Enabled = false),这就是你需要的,但是如果你想让excel将焦点设置到ComboBox2上,请使用ComboBox2.SetFocus

答案 1 :(得分:0)

我相信组合框在你的工作表中。

导致此错误有两个主要原因。

  1. 禁用ActiveX控件。您可能希望查看THIS

  2. 您的工作表受到保护。如果您的工作表受到保护,那么您有两种方法来处理它

  3. 方式1

    Private Sub ComboBox1_Change()
        ActiveSheet.Unprotect "YOUR PASSWORD"
        If ComboBox1.Value = "One Session" Then
           ComboBox2.Enabled = True
        End If
        ActiveSheet.Protect "YOUR PASSWORD"
    End Sub
    

    OR

    方式2

    这使用UserInterfaceOnly:=True,它允许您仅使用宏

    更改工作表
    ActiveSheet.Protect Password:="YOUR PASSWORD", _
    DrawingObjects:=True, Contents:=True, _
    Scenarios:=True, UserInterfaceOnly:=True
    

答案 2 :(得分:0)

我一直在讨论这个问题,而且我的解决方案与之前的两个答案略有不同。在我的情况下,对象被锁定,以及工作表。我的解决方案是取消保护工作表,选择导致错误的对象,进入其属性,然后取消选中“已锁定”。然后重新保护工作表并保存。