删除程序生成的button

我在VBA项目中有以下代码行:

ActiveSheet.Shapes("Button 1").Delete 

如果它说“button1”,我希望它被链接到某种variables。

我问的原因是我有一个“索引”工作表上的链接,使用VBA创build一个新的工作表(一个单独的,模板工作表的副本),新创build的工作表包含上述button。 当我点击新的复制工作表上的button时,它应该执行一个操作,然后button应该被删除。

我面临的问题是button名称在每个单独的工作表上创build。

在工作表5中,它将被称为“button5”,在工作表6中,它将被称为“button6”等。因此,上面的代码行不起作用,因为它仍然引用“button1”。

有没有人有任何想法如何正确引用?

谢谢您的帮助。

如果您从button所调用的代码中删除button,那将是:

 ActiveSheet.Shapes(Application.Caller).Delete 

编辑

仔细重读你的问题后,我想到了这一点。 它捕获以“button”开头的工作表上的所有形状,而不考虑数字。

 Dim frmButton As Shape For Each frmButton In ThisWorkbook.Worksheets("Sheet1").Shapes If frmButton.Name Like "Button*" Then frmButton.Delete End If Next 

你可以用上面的代码把上面的代码包装成多页。

 Dim ws As Worksheet For Each ws in ThisWorkbook.Worksheets If Not ws.Name = "Sheet2" Then 'Exclude certain sheets "Sheet2" is excluded in this case. 'Code End If Next ws 

编辑结束


对于ActiveX控件,请尝试:

 ThisWorkbook.Worksheets("Sheet1").OLEobjects("CommandButton1").Delete 

用属性中find的实际名称replace“Sheet1”和“CommandButton1”,不要将其与标题混淆,尤其是对于button。

对于一个表单控件button尝试:

 ThisWorkbook.Worksheets("Sheet1").Shapes("Button 1").Delete 

如果您所引用的工作簿不是代码所在工作簿,请将ThisWorkbookreplace为Workbooks("Book1") 。将“Book1”replace为工作簿的实际名称。

由于“button1”是一个string,所以可以用一个包含string的variables来replace它,但是要注意,如果没有variables包含名称的形状,将会出现错误。