原谅我的无知(新手和VBA的一点知识)......
我开发了一些附加到按钮的宏,并在工作簿中的一个工作表中工作。宏在日历上执行各种作业。医院翼楼的10间卧室每个都有一个日历。
我现在想要为每个卧室制作相同的工作表和相同的按钮和宏,即10个工作表。
但请尝试我可能无法让宏在其他工作表中使用。
宏位于第一个工作表(Bed1)的VBA代码编辑器中。我已将代码复制到VBA编辑器中的“此工作簿”页面中 - 但除了阻止它们工作之外没有任何效果。
这是一个典型的宏:
'============================================
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
Q值。我做错了什么使得它只能在Bed1工作表中首先开发出来?
亲切的问候 拉斯
答案 0 :(得分:1)
从ThisWorkbook
模块中取出代码并将其放入普通代码模块中。在设计模式下,在Excel窗口(而不是VBE)中,右键单击按钮并执行Assign Macro
,然后选择宏“Prevw1_Click”。这应该工作。您必须为每个按钮分配宏,或者您只需将按钮复制/粘贴到其他工作表。
如果您的按钮是ActiveX控件,那么我认为您可能需要为工作表中按钮所在的每个按钮设置子例程。因此,每个工作表可能都有一个名为“CommandButton1”的activeX命令按钮,然后每个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
我之所以这样做,而不是将现有宏复制到10个工作表中的每一个都很简单:如果您需要修改子程序,只需要在一个地方修改它。同样,如果你添加一个新的工作表,你只需要复制3行代码而不是20行。这样更容易维护,因为每个工作表的按钮调用相同的代码,每个工作表的按钮应该只有一个简单的子代码这称为“主要”程序。