如果我不知道名称,如何检查button是否存在?

如果我不知道名称,是否有办法查看工作表上是否存在button?

我在“ThisWorkbook”中有工作簿打开时创build一个button的代码。 但是,如果button已经存在,我不希望它创build一个button。 所以我需要一种方法来检测button是否存在。

我有另一种方法,这不起作用,我将包括,只是因为!

单击button时,将创build一个名为“移调数据”的新工作表。 所以,如果button在那里,该工作表也在那里。 所以我试了下面的sub:

Private Sub Workbook_Open() Dim btn As Button Dim rng As Range On Error GoTo Errorhandler Sheets("Transposed Data").Activate Errorhandler: MsgBox ("ERROR") With Worksheets("Program Sheet") Set rng = .Range("A4:C4") Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) With btn .Caption = "Click here to continue" .AutoSize = True .OnAction = "TableCreation" End With End With End Sub 

我认为这个代码应该只创buildbutton,如果它发现转置的数据工作表不在那里,这正是我想要的。 但是,这段代码每次尝试运行时都只是表示一个错误。 我已经testing了所有的零件,而且它们都能正常工作,所以我不确定问题是什么。

但是,如果有一个不同的方法来检测一个button是否已经在工作表中,我不需要这个,因为我可以简单地创build一个if / then语句!

我可以看到两种方法来做到这一点:

1)检查button是否已经存在( 假设只有一个button

 Private Sub Workbook_Open() Dim btn As Button, rng As Range With Worksheets("Program Sheet") If .Shapes.Count = 0 Then //ie there aren't any buttons... Set rng = .Range("A4:C4") Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) With btn .Caption = "Click here to continue" .AutoSize = True .OnAction = "TableCreation" End With End If End With End Sub 

2)检查表格Transposed Data是否已经存在

 Private Sub Workbook_Open1() Dim btn As Button, rng As Range, sht As Worksheet On Error Resume Next Set sht = Sheets("Transposed Data") If sht Is Nothing Then //ie there is not worksheet called "Transposed Data" With Worksheets("Program Sheet") Set rng = .Range("A4:C4") Set btn = .Buttons.Add(rng.Left, rng.Top, rng.Width, rng.Height) With btn .Caption = "Click here to continue" .AutoSize = True .OnAction = "TableCreation" End With End With End If End Sub