我在VBA项目中有以下代码行:
ActiveSheet.Shapes("Button 1").Delete
如果它说“按钮1”,我希望它链接到某种变量。
我问的原因是我在“索引”工作表上有一个链接,它使用VBA创建一个新工作表(一个单独的模板工作表的副本),新创建的工作表包含上面的按钮。当我在新复制的工作表上单击该按钮时,它应该执行操作,然后应该删除该按钮。
我面临的问题是按钮名称会在创建的每个单独工作表上发生更改。
在工作表5中,它将被称为“按钮5”,在工作表6中,它将被称为“按钮6”等。由于这个原因,上面的代码行不起作用,因为它仍然引用“按钮1” ”。
有没有人对如何正确引用这个有任何想法?
感谢您的帮助。
答案 0 :(得分:1)
如果要从按钮调用的代码中删除按钮,则为:
ActiveSheet.Shapes(Application.Caller).Delete
答案 1 :(得分:0)
在仔细阅读你的问题后,我想到了这一点。 无论数字如何,它都会捕获以“按钮”开头的工作表上的所有形状。
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
将“Sheet1”和“CommandButton1”替换为属性中的实际名称,不要将其与标题混淆,尤其是对于按钮。
对于表单控件按钮,请尝试:
ThisWorkbook.Worksheets("Sheet1").Shapes("Button 1").Delete
如果您指的是与代码所在的工作簿不同的工作簿,请将ThisWorkbook
替换为Workbooks("Book1")
。将“Book1”替换为工作簿的实际名称。
由于“按钮1”是一个字符串,您可以将其替换为包含字符串的变量,但请注意,如果变量中没有包含该名称的形状,您将收到错误。