Excel Worksheet.CommandButton生成未找到的方法错误

Excel Worksheet.CommandButton生成未找到的方法错误,excel,vba,Excel,Vba,对于下面的代码,我得到了这个错误 找不到方法或数据成员 以下代码起作用: Private Sub Workbook_Open() With Worksheets("Sheet1").CommandButton1 'Set Top/Height/Width/Left End With End Sub 我想写一个较短的宏,而不是总是写工作表(“…”)。CommandButton..您可以使用以下方法来完成相同的操作: Private Sub Workbook_Op

对于下面的代码,我得到了这个错误

找不到方法或数据成员

以下代码起作用:

Private Sub Workbook_Open()
    With Worksheets("Sheet1").CommandButton1
         'Set Top/Height/Width/Left
    End With
End Sub

我想写一个较短的宏,而不是总是写
工作表(“…”)。CommandButton..

您可以使用以下方法来完成相同的操作:

Private Sub Workbook_Open()
    Dim obj As Object
    Set obj = Sheet1.CommandButton1
    With obj   ' Error apears here
        'Set Top/Height/Width/Left
    End With

End Sub
在我的示例中,我使用的是工作表的代码名,而不是常规名称


我认为您发布的第一个版本不起作用的原因是CommandButton1不是工作表对象模型的一部分。

据我所知,我认为您不能使用工作表对象方法引用命令按钮,即。
ws1.CommandButton1
。但是,使用
工作表(“Sheet1”).CommandButton1
指定的是命令按钮的位置,而不是对象的引用。@Dean感谢您提供的信息,不幸的是,这并不是我所希望的答案。但是很高兴知道为什么不可能。我相信有更深入了解的人会进一步帮助:)+1用于使用代码名。我认为将
Sheet1.CommandButton1
声明为
对象也很重要。OP可以做与
工作表(“Sheet1”)相同的操作。CommanButton1
并设置为object以获得相同的结果。多亏了您,这项工作很好,但是对于十张工作表和每个工作表上的五到十个按钮,我必须使很多对象变暗:/@diem\L您可以使用for循环重置对象,不应该这样difficult@Dean正确的,现在从来没有想过循环,但是是的,应该不难。谢谢你们,节省了我很多时间:)没问题@迪恩:对,你是说另一种方法。这也行。
Private Sub Workbook_Open()
    Dim obj As Object
    Set obj = Sheet1.CommandButton1
    With obj   ' Error apears here
        'Set Top/Height/Width/Left
    End With

End Sub