在所有工作表中应用Button +macros

原谅我的无知(newby和VBA的一点知识)…

我开发了一些附加到button的macros,并在工作簿中的一个工作表中工作。 macros在日历上执行各种作业。 医院翼楼的每间卧室都有一个日历。

我现在想用相同的button和macros制作相同的工作表,每个卧室即10个工作表。

但尝试我可能无法让macros在其他工作表中工作。

这些macros位于第一个工作表(Bed1)的VBA代码编辑器中。 我已经将代码复制到VBA编辑器中的“This Workbook”页面中,但是没有任何效果,除了阻止它们工作。

这是一个典型的macros观:

'============================================ Private Sub Prevw1_Click() '============================================ ' DAILY PATIENT TIMETABLE ' PRINT PREVIEW '============================================ ActiveSheet.Select ActiveSheet.AutoFilterMode = False Range("_Daily").Select ActiveSheet.PageSetup.PrintArea = "_Daily" ' Call page_SetUp ' ' Variations for page setup With ActiveSheet.PageSetup .LeftMargin = Application.InchesToPoints(1.5) .RightMargin = Application.InchesToPoints(0.9) .Zoom = 75 End With ActiveSheet.PrintPreview ActiveSheet.PageSetup.PrintArea = "" Range("H126, H126").Select End Sub 

问:我做了什么错误,这使得它只能在Bed1工作表中首先开发的地方工作?

亲切的问候Russ

将代码从ThisWorkbook模块中取出并放入一个普通的代码模块中。 在devise模式下,在Excel窗口(不是VBE)中,右键单击该button并执行Assign Macro ,然后selectmacros“Prevw1_Click”。 这应该工作。 您必须将macros分配给每个button,或者您可以简单地将button复制/粘贴到其他工作表。

如果你的button是一个ActiveX控件,那么我认为你可能需要为button所在的工作表中的每个button设置子例程。 所以,每个工作表可能有一个名为“CommandButton1”的activeX命令button,那么每个Worksheet代码模块应该有一个子例程:

 Sub CommandButton1_Click() Call ClickTheButton End Sub 

你基本上将所有相同的代码放在10个工作表代码模块的每一个中。 然后,在普通的代码模块中重命名你的例程,如:

 Private Sub ClickTheButton() '============================================ ' DAILY PATIENT TIMETABLE ' PRINT PREVIEW '============================================ ActiveSheet.Select ActiveSheet.AutoFilterMode = False Range("_Daily").Select ActiveSheet.PageSetup.PrintArea = "_Daily" ' Call page_SetUp ' ' Variations for page setup With ActiveSheet.PageSetup .LeftMargin = Application.InchesToPoints(1.5) .RightMargin = Application.InchesToPoints(0.9) .Zoom = 75 End With ActiveSheet.PrintPreview ActiveSheet.PageSetup.PrintArea = "" Range("H126, H126").Select End Sub 

我这样做的原因,而不是将现有的macros复制到10个工作表中的每一个很简单:如果您需要修改您的子程序,您只需要在一个地方修改它。 同样,如果你添加一个新的工作表,你只需要复制3行代码而不是20个。这样更容易维护,因为每个表单的button都调用相同的代码,每个表单的button应该只有一个简单的子这就是所谓的“主”程序。