当我将一个组合框添加到工作表时,我遇到了.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
答案 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