将VBA子插入到Excel工作表中

美好的一天,

我正在使用Excel 2013,我想隐藏和取消隐藏我的工作表。 我花了一些时间search,发现在论坛上添加VBA模块的古代post,但是这不是我所期待的。

在我花费大部分时间使用数据的主页上,我有一个button,它显示带有列表框中列表的用户窗体。 我从列表框中select工作表,点击确定,它运行以下;

Private Sub OKButton_Click() ThisWorkbook.Sheets(JobListBox.value).Visible = xlSheetVisible ThisWorkbook.Sheets(JobListBox.value).Activate Unload Me End Sub 

我想这样做,当我有我通过VBA创build新的工作表,我可以用下面的子程序填充工作表;

 Private Sub Worksheet_Deactivate() Me.Visible = xlSheetVeryHidden End Sub 

如果任何人都可以让我知道如何使子程序插入到我的表中,我将不胜感激。

PS:我的回退方法是,当然,只是手动复制/粘贴代码…但我宁愿自动化,如果可能的话。

而不是将相同的代码添加到每个工作表,因为它们都在工作簿内,并且一旦工作簿中的任何工作表被停用,您确实试图执行隐藏,请将其放在ThisWorkbook的代码中。

 Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) Sh.Visible = xlSheetVeryHidden End Sub 

您可能能够在您的项目types中使用更多的工作簿事件。

以下是工作簿事件的列表 。

如果你想排除你的主页,你可以通过添加一个IF语句来修改:

 Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) IF Sh.Name <> "Main" Then Sh.Visible = xlSheetVeryHidden End If End Sub 

主要的思路是,如果你必须把相同的代码放到多个对象中,更别说所有的对象了,你重复着自己。

检查干燥的概念,或“不要重复自己”,除非你喜欢它湿,“我们喜欢打字”。 或“一次写两遍”。 即使它只是以编程方式创build的,但是当您可以让一段代码具有传入参数(这是一个工作表)时,一块代码不应该存在于所有表单中。

这样,如果你不得不改变它的行为,你只需要做一次。 这很容易testing,以后要跟踪或修改。

所以,如果你发现自己不得不反复使用相同的代码,那么请查看父对象,然后尝试find一种方法将变化的对象或variables作为parameter passing给单个代码或模块。

此外, 这可能是为什么你没有find任何结果插入相同的代码到每个工作表。 这不是一个好的做法

条款干