自动复制工作表代码(Microsoft Excel)
Tim正确地指出,用户可以右键单击工作表选项卡,然后选择“查看代码”以打开该工作表的VBA代码表。他编写了可自动操纵单元格,列和行的代码。即使用户添加了新工作表,此代码也必须在工作簿的每个工作表上都可用。蒂姆想知道是否有一种使用VBA的方法可以将一个工作表的代码自动复制到工作簿中的新工作表中。
有几种方法可以解决此问题。一种方法(也许是最简单的方法)是从工作表的代码表中删除宏,然后将其移至ThisWorkbook模块。右键单击工作表选项卡时,将看到工作表的代码表。该工作表中的代码旨在处理仅在该工作表中发生的工作表中的事件。如果将代码移至ThisWorkbook模块,则仍可以处理事件,但是这些事件适用于工作簿中的所有工作表。
例如,当您右键单击工作表选项卡并查看代码窗口时,您最初是在Worksheet_SelectionChange事件中工作的。如果要将此代码移至ThisWorkbook模块,则可以将其放在Workbook_SheetChange事件中。
如果您的代码的这种“级别更改”由于某种原因而无法使用,则另一种方法是在工作簿中创建模板工作表。
为其命名,例如“ MyMaster”,并确保它包含要添加到新创建的工作表中的所有代码。如果需要,您甚至可以隐藏此工作表,以免分散用户的注意力。然后,将以下宏放入ThisWorkbook模块:
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim tmpName As String tmpName = Sh.Name Sheets("MyMaster").Copy Before:=Sheets(Sh.Name) Application.DisplayAlerts = False Sheets(Sh.Name).Delete Application.DisplayAlerts = True Sheets("MyMaster (2)").Name = tmpName End Sub
每次将新工作表添加到工作簿时,都会触发此代码。它查看新添加的工作表的名称(类似于“ Sheet4”),并将该名称保存在一个临时变量中。
然后,代码将MyMaster工作表复制到工作簿(这还将复制工作表中的宏),删除最初创建的工作表,然后将新的MyMaster副本重命名为具有与原始工作表相同的名称。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(7880)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: