个人宏库的范围

时间:2014-07-15 16:58:07

标签: vba excel-vba excel

我的个人.xb中保存了一个宏。 此宏的第一步使用

确定当前工作簿中的工作表数
Dim NumSheets As Integer
NumSheets = ThisWorkbook.Worksheets.Count

我从任意数量的工作簿中调用此宏,这些工作簿具有许多不同数量的工作表,但值始终被指定为1.我最好的猜测是在Personal.xlsb工作簿中,只有一个工作表。如何从我调用宏的工作簿中获取当前页数?

2 个答案:

答案 0 :(得分:4)

而不是ThisWorkbook,请使用ActiveWorkbook

或者您可以使用Workbooks("A_Workbook"),其中“A_Workbook”是特定工作簿的名称。您可以将工作簿的名称作为String参数传递到宏中。

澄清两种方法:

1。如果使用ActiveWorkbook

Public Function NumSheets() As Long

  NumSheets = ActiveWorkbook.Worksheets.Count

End Function

2。如果使用Workbooks("...")

Public Function NumSheets(wbName As String) As Long

  NumSheets = Workbooks(wbName).Worksheets.Count

End Function

请注意,您的宏必须为Public,以便其他工作簿可以访问它。

答案 1 :(得分:1)

ThisWorkBook object指的是包含代码的工作簿。但ActiveWorkBook对象引用当前活动的工作簿。 在您的情况下,因为运行代码的工作簿不是活动工作簿,使用ActiveWorkBook将解决您的问题,并指向您希望它执行的当前工作簿。