【发布时间】:2017-01-30 17:11:16
【问题描述】:
我的问题是遍历工作簿中的多个工作表。
我需要将宏保存在我的个人工作簿中,但如果我这样做,它会遍历同一个工作表,直到达到工作表数。
如果我将代码移动到当前工作簿,它会很好地工作。我研究过编写一个宏来将模块从个人工作簿复制到当前工作簿,但对于其他用户来说,这个模块将简单地保存在另一个仅在后台打开以运行模块的工作簿中。
当代码保存到我的个人工作簿中的一个模块中,或者只是保存在另一个在后台打开的工作簿中时,我如何让这个循环遍历另一个工作簿中的所有工作表?
代码如下:
Sub WorksheetLoop()
' Loop Through Worksheets, Add Totals
Dim LastRow As Long
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet
' Loop Sum Formula Through All Worksheets
For Each ws In ThisWorkbook.Worksheets
ws.Activate
'Now my code, the do something, (I have simplified this part since this _
works, its the loop that's broken)
'Insert new blank rows
Rows("1:6").Select
Selection.Insert Shift:=xlDown
'Got to next worksheet, but it will not!
Next
End Sub
【问题讨论】:
-
尝试将 For Each ws In ThisWorkbook.Worksheets 更改为 For Each ws In ActiveWorkbook.Worksheets。如果您希望它在用户打开的工作簿中运行,而不是在存储宏的工作簿中运行。
-
我仍然遇到同样的问题。它似乎可以识别当前工作簿并识别当前工作表,因为它循环了 9 次,这是工作簿中有多少张工作表,但它不会循环遍历每个工作表。
-
您是否尝试过从全新的工作簿运行宏,以查看它是否特定于您要使用的工作簿?
-
我有。事实上,每次我下载新数据时,它总是一个新的工作簿。它的第一个 CSV 格式,我在那里尝试过,然后保存为启用宏的 xlsx 格式,仍然是同样的问题。
-
我的意思只是打开一个新工作簿而不导入任何数据,只是为了查看它是否循环通过 3 个默认工作表并最终出现在 Sheet3 上。我问的原因是因为 Vinnie 和我自己都在运行代码并获得预期结果并非巧合。我们都没有您的数据,也没有任何额外的代码,除了激活每张工作表以检查它是否在正确的工作簿上执行此操作外,我没有让它做任何事情。有时,当事情不正常时,您需要将其剥离为基础并重新构建。