&引用;对象没有';“我不支持这一行动”;用于Excel 2011(Mac OS X)中的下拉菜单

&引用;对象没有';“我不支持这一行动”;用于Excel 2011(Mac OS X)中的下拉菜单,excel,vba,macos,excel-2011,Excel,Vba,Macos,Excel 2011,我有一个用Office2010制作的带有VBA代码的大型Excel工作簿。除了下拉菜单,一切似乎都很好。准确地说,它们在图形上起作用,但是 Me.Shapes("Drop Down 1").ControlFormat 抛出一个“Object Not support this action”(对象不支持此操作)错误(我确信“Drop Down 1”是正确的名称,等等),准确地说,它被正确引用(例如shape=Me.Shapes(1)工作),但它似乎不喜欢ControlFormat。谷歌帮不了多少

我有一个用Office2010制作的带有VBA代码的大型Excel工作簿。除了下拉菜单,一切似乎都很好。准确地说,它们在图形上起作用,但是

Me.Shapes("Drop Down 1").ControlFormat
抛出一个“Object Not support this action”(对象不支持此操作)错误(我确信“Drop Down 1”是正确的名称,等等),准确地说,它被正确引用(例如
shape=Me.Shapes(1)
工作),但它似乎不喜欢
ControlFormat
。谷歌帮不了多少忙;有什么建议吗

我对VBA很陌生,所以可能有一些我不知道的琐碎的调试魔法


编辑:我尝试创建一个带有虚拟下拉菜单的新工作簿,并在录制宏时选择值,但没有结果(就像菜单从未存在过一样)。

我知道这听起来既令人沮丧又愚蠢,但对于Excel 2011,请将行从

Me.Shapes(“下拉列表1”).ControlFormat

工作表(“Sheet1”).Shapes(“下拉列表1”).ControlFormat

比如说

这将适用于Excel 2010,但不适用于Excel 2011

Sub Sample()
    With Me.Shapes("Drop Down 1").ControlFormat
        .AddItem "Sid"
    End With
End Sub
它会给你你提到的错误

屏幕截图

对于Excel 2011,您必须使用(完全限定对象)

屏幕截图


注意:用相关的工作表名称替换上面的
工作表1

试试
?Me.Shapes(1).Name
在即时窗口(Ctrl+G)中查看错误发生时的名称是否正确Mac上的Excel 2010和Excel 2011之间存在差异/比较列表吗?这绝对是愚蠢的。非常感谢你!我不知道我该怎么做:)你知道为什么第一种方法在Mac上不起作用吗?有什么原因吗?@amb110395:我不知道为什么它在Excel 2011中不起作用。但很多东西在Excel2011上都不起作用。我想这是微软的编码方式。
Sub Sample()
    With Worksheets("Sheet1").Shapes("Drop Down 1").ControlFormat
        .AddItem "Sid"
    End With
End Sub