我是VBA的新手,我无法找到答案。我在一张纸上有ActiveX按钮。我也在创建新工作表是同一个工作簿。问题是按钮出现在所有这些工作表上。我希望该按钮只出现在一个工作表上,因此它不会出现在我使用VBA创建的其他工作表上。
单独模块中的代码:
Option Explicit
Sub copying()
Worksheets(1).Copy After:=Worksheets(Worksheets.Count)
Worksheets(2).Activate
Worksheets(2).Name = "Test"
End Sub
正在调用复制功能的按钮的代码:
Option Explicit
Private Sub CommandButton1_Click()
Call copying
End Sub
按钮出现在创建的新工作表上。
谢谢。
答案 0 :(得分:3)
您正在使用Worksheet.Copy
方法复制工作表及其所有内容,包括您的按钮。使用Sheets.Add
方法(https://msdn.microsoft.com/en-us/library/office/ff839847.aspx)或复制工作表,然后删除按钮。
.Add
只会添加一个新表:
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
.Copy
将复制工作表的内容。如果您要复制的工作表上有大量数据,则复制工作表并删除额外按钮会更容易:
Option Explicit
Sub copying()
Worksheets(1).Copy After:=Worksheets(Worksheets.Count)
Worksheets(2).Activate
Worksheets(2).Name = "Test"
Dim objShape As Shape
For Each objShape In ActiveSheet.Shapes
' I think 12 is the msoShapeType you need.
If objShape.Type = 12 Then objShape.Delete
Next objShape
End Sub