Excel VBA组合框锁定属性问题

时间:2013-08-21 16:09:28

标签: excel vba combobox locked commandbutton

当我将一个组合框添加到工作表时,我遇到了.locked属性的问题。我正在使用以下代码:

    Set cBox = Sheet1.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
        With cBox
            .Left = Sheet1.Range("N" & i).Left
            .Top = Sheet1.Range("N" & i).Top
            .Width = Sheet1.Range("N" & i).Width
            .Height = Sheet1.Range("N" & i).Height
            .ListFillRange = "Sheet3!$A1:$A3"
            .Locked = False
        End With

当我进入设计模式并查看按钮的属性时,它仍显示Locked为True。我在编辑属性的方式有什么不对吗?

感谢您的时间,我有86个组合框,因此手动解锁它们会很乏味。

-Aaron

2 个答案:

答案 0 :(得分:1)

我对您的代码进行了简单的复制+粘贴,并进行了一些修改,因此它可以在全新的空白工作簿中使用:

Option Explicit

Sub testCode()
    Dim cBox As Object
    Set cBox = Sheet1.OLEObjects.Add(ClassType:="Forms.ComboBox.1")
        With cBox
            .Left = Sheet1.Range("N1").Left
            .Top = Sheet1.Range("N1").Top
            .width = Sheet1.Range("N1").width
            .height = Sheet1.Range("N1").height
            .ListFillRange = "Sheet3!$A1:$A3"
            .Locked = False
        End With
End Sub

上面的代码对我来说很好,在开发者模式下它表示被锁定的属性是假的 我正在使用Microsoft Excel 2007.
它可能与您的i变量有关,因为唯一的区别是我只使用了N1的静态范围并且它工作正常。虽然我不确定它的尺寸如何导致它不能锁定。

尝试自己复制并粘贴我的代码,看看它吐出的内容。

答案 1 :(得分:0)

在Sheet1上添加所有组合框后尝试此操作:

Sub a()
    Dim obj As Shape

    For Each obj In Sheet1.Shapes
        'If obj type is 12
        If obj.Type = 12 Then
            obj.Locked = False
        End If
    Next obj
End Sub

希望这有帮助,
kpark