删除程序生成的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
如果您所引用的工作簿不是代码所在工作簿,请将ThisWorkbook
replace为Workbooks("Book1")
。将“Book1”replace为工作簿的实际名称。
由于“button1”是一个string,所以可以用一个包含string的variables来replace它,但是要注意,如果没有variables包含名称的形状,将会出现错误。