我的个人.xb中保存了一个宏。 此宏的第一步使用
确定当前工作簿中的工作表数Dim NumSheets As Integer
NumSheets = ThisWorkbook.Worksheets.Count
我从任意数量的工作簿中调用此宏,这些工作簿具有许多不同数量的工作表,但值始终被指定为1.我最好的猜测是在Personal.xlsb工作簿中,只有一个工作表。如何从我调用宏的工作簿中获取当前页数?
答案 0 :(得分:4)
而不是ThisWorkbook
,请使用ActiveWorkbook
。
或者您可以使用Workbooks("A_Workbook")
,其中“A_Workbook”是特定工作簿的名称。您可以将工作簿的名称作为String
参数传递到宏中。
澄清两种方法:
ActiveWorkbook
:Public Function NumSheets() As Long
NumSheets = ActiveWorkbook.Worksheets.Count
End Function
Workbooks("...")
:Public Function NumSheets(wbName As String) As Long
NumSheets = Workbooks(wbName).Worksheets.Count
End Function
请注意,您的宏必须为Public
,以便其他工作簿可以访问它。
答案 1 :(得分:1)
ThisWorkBook
object指的是包含代码的工作簿。但ActiveWorkBook
对象引用当前活动的工作簿。
在您的情况下,因为运行代码的工作簿不是活动工作簿,使用ActiveWorkBook
将解决您的问题,并指向您希望它执行的当前工作簿。