因此,我在工作簿中创建了一个主菜单,如果用户单击一个按钮,则会创建一个新工作表并为用户打开以查看某些数据。
现在,我想动态(通过VBA代码)在当前活动工作表上创建一个按钮,其中包含允许用户关闭工作表的数据(基本上删除ActiveSheet并返回到主菜单)
我尝试查看VBA帮助以获取有关按钮控件的信息,但我能找到的只是CommandButton上的信息(我相信它只能在UserForm中使用)。
我搜索了这个主题并且只发现了这篇文章,但它没有用。如果有帮助,我正在使用Excel 2010。 How to add a button programmatically in VBA next to some sheet cell data?
答案 0 :(得分:0)
解决此问题的一种方法是使用模板。使用所述按钮创建工作表。在工作表模块中,您可以使用:
Public Sub CopySheet()
ThisWorkbook.Worksheets("Template").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = "Your Name"
End With
'Fill with data etc....
End Sub
创建工作表时,您可以使用以下模板:
import sys
x = 2
print (sys.getsizeof(x))
复制的模板现在有你的删除按钮。还有其他方法可以实现,但这可能是最简单的。
P.s。:为工作表添加一个按钮"添加"在开发人员选项卡中对表单的窗体或活动X控件。你使用哪一个不应该与模板有关。
答案 1 :(得分:0)
这是另一种方式......
Sub CreateSheetAddButton()
' Set the worksheet to a new sheet
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
End With
Dim btn As Button
' Add a button and assign an onaction macro
With ws
.Name = "YourName"
Set btn = .Buttons.Add(71.25, 26.25, 107.25, 63.75)
End With
With btn
.OnAction = "DeleteWS"
.Caption = "Delete Current Sheet"
.Name = "btnDel"
End With
' Clean up
Set ws = Nothing
Set btn = Nothing
End Sub
Sub DeleteWS()
Dim ws As Worksheet, wsMain As Worksheet
Set ws = ThisWorkbook.ActiveSheet
Set wsMain = ThisWorkbook.Worksheets("Main")
With ws
Application.DisplayAlerts = False
ws.Delete
wsMain.Activate
Application.DisplayAlerts = True
End With
' Clean up
Set ws = Nothing
Set wsMain = Nothing
End Sub