我不认为这在技术上是一个宏,但我不知道还有什么可以称之为:
用户希望从工作表上的报表中打印单个部分。这些部分只是命名范围。
有些观点:
我在工作表的边缘创建了一系列按钮:
' in a loop
With ActiveSheet.Buttons.Add(rngCurrent.Left + 2, rngCurrent.Top + 1, rngCurrent.Width - 2, rngCurrent.Height - 1)
.Caption = "Print"
.OnAction = "PrintRange"
.Font.Size = 7
.Name = CStr(oSite.SiteID)
End With
然而,当我点击按钮时,它会显示“无法运行宏'filename.xls!PrintRange”。
当循环位于名为modPage的模块中时,PrintRange函数位于工作表shtPage中。
为什么我不能调用我需要的功能以及如何使其工作?
答案 0 :(得分:5)
即使将PrintRange子声明为Public,您仍需要更具体地引用它,以便Excel可以找到它,因为您已将其放在工作表的代码部分而不是模块中。
变化:
.OnAction = "PrintRange"
到
.OnAction = "shtPage.PrintRange"
它会正常工作。
警告:如果您已将页面选项卡上的工作表重命名为“shtPage”,但在VBA项目资源管理器中,Excel仍然将工作表称为“Sheet1(shtPage)”,则需要使用'Sheet1 'Excel识别的名称,而不是页面选项卡上显示的'shtPage'名称。
答案 1 :(得分:1)
您是否公开了PrintRange
宏?它需要定义如下:
Public Sub PrintRange
'// ...'
End Sub