我只是尝试填充Excel工作表中嵌入的组合框。我正在使用Excel 2010 for Mac。
以下命令返回运行时错误445“对象不支持此操作”
Public Sub Worksheet_Activate()
With Me.Shapes("TheComboBox").ControlFormat
.RemoveAllItems
.List = Array("me", "you")
End With
但以下情况可以正常使用
Public Sub Worksheet_Activate()
With Worksheets(1).Shapes("TheComboBox").ControlFormat
.RemoveAllItems
.List = Array("me", "you")
End With
请注意,代码位于Worksheet 1的Worksheet_Activate sub中,因此Me和Worksheets(1)应该引用完全相同的东西(对吗?)。
我在网上发现this类似的帖子暗示Excel for Mac不喜欢在作为变量传递的工作表上使用ControlFormat。是否有解决方法,以避免必须硬编码工作表的数字或名称?我不希望用户四处移动或重命名工作表,从而打破它。
答案 0 :(得分:1)
由于严格定义的Worksheet_Activate事件使工作表处于活动状态,因此我认为ActiveSheet property应该正确引用正确的工作表。
我会远离工作表.Name property和Worksheet.Index property,因为工作表通常会在队列中移动并重命名。但是,工作表.CodeName property通常保持静态,尽管只需稍加努力即可更改。
Private Sub Worksheet_Activate()
With Sheet1.Shapes("TheComboBox").ControlFormat
.RemoveAllItems
.List = Array("me", "you")
End With
End Sub