ActiveX按钮出现在所有工作表上

时间:2016-08-07 17:23:17

标签: vba excel-vba activex excel

我是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

按钮出现在创建的新工作表上。

谢谢。

1 个答案:

答案 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