我不能使用VBA工作表variablesMe来填充该Excel工作表中embedded的ComboBox?

我只是试图填充embedded在Excel工作表中的combobox。 我正在使用Mac版Excel 2010。

以下返回运行时错误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子,所以我和工作表(1)应该引用完全相同的东西(正确的?)。

我在网上发现了这个类似的post,build议Excel for Mac不喜欢在作为variables传递的工作表上使用ControlFormat。 是否有避免必须硬编码工作表的编号或名称的解决方法? 我不希望用户移动或重命名工作表,从而打破它。

由于通过严格定义Worksheet_Activate事件使工作表激活,那么我会假设ActiveSheet属性应该引用到正确的工作表。

由于工作表通常在队列中移动并重命名,因此我将远离Worksheet .Name属性和Worksheet.Index属性 。 但是,工作表.CodeName属性通常保持静态,虽然可以通过一点努力来更改。

 Private Sub Worksheet_Activate() With Sheet1.Shapes("TheComboBox").ControlFormat .RemoveAllItems .List = Array("me", "you") End With End Sub