Vba 循环浏览工作簿中的每个工作表
我试图循环浏览工作簿中的每个工作表,但它不起作用。我认为是活动工作簿。工作表无法识别每个工作表,只能在活动工作表上运行。任何建议都很好!我相信这是一个基本的修复,但似乎无法解决它。谢谢Vba 循环浏览工作簿中的每个工作表,vba,loops,excel,worksheet,Vba,Loops,Excel,Worksheet,我试图循环浏览工作簿中的每个工作表,但它不起作用。我认为是活动工作簿。工作表无法识别每个工作表,只能在活动工作表上运行。任何建议都很好!我相信这是一个基本的修复,但似乎无法解决它。谢谢 Sub LoopThroughWorksheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If (ws.Name <> "Sheet1") And (ws.Name <>
Sub LoopThroughWorksheets()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet8") And (ws.Name <> "Sheet42") Then
With ws
'code
'Sheets("Formula").Select
Range("FormulaRow").Copy
'Selection.Copy
ActiveSheet.Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
Calculate
Range("Q1:X1").Select
Selection.Copy
Range("Q3:X3000").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Calculate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
End If
Next ws
End Sub
子循环工作表()
将ws设置为工作表
对于ActiveWorkbook.Worksheets中的每个ws
如果(ws.Name“Sheet1”)和(ws.Name“Sheet2”)以及(ws.Name“Sheet8”)和(ws.Name“Sheet42”),则
与ws
“代码
'表格(“公式”)。选择
范围(“公式行”)。副本
'选择。复制
活动表。选择
ActiveSheet.Range(“A1”)。选择
活动表。粘贴
算计
范围(“Q1:X1”)。选择
选择,复制
范围(“Q3:X3000”)。选择
Selection.Paste特殊粘贴:=xlPasteFormulas,操作:=xlNone_
SkipBlanks:=False,转置:=False
Application.CutCopyMode=False
算计
选择,复制
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
以
如果结束
下一个ws
端接头
对于With
语句,您需要在每次希望使用
引用该对象时继续操作,以按预期方式使用它。
但是,如果我理解您的意思,我认为最简单的解决方案是添加以下代码行:
ws.Select
详情如下:
For Each ws In ActiveWorkbook.Worksheets
If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet8") And (ws.Name <> "Sheet42") Then
ws.Select
With ws
'code
'Sheets("Formula").Select
Range("FormulaRow").Copy
...
ActiveWorkbook.工作表中每个ws的
如果(ws.Name“Sheet1”)和(ws.Name“Sheet2”)以及(ws.Name“Sheet8”)和(ws.Name“Sheet42”),则
ws.Select
与ws
“代码
'表格(“公式”)。选择
范围(“公式行”)。副本
...
然后,您还应该努力更改内容,例如从范围(“FormulaRow”)。将复制到范围(“FormulaRow”)。复制,以便确保正确使用With
语句
希望这是有意义的…“我认为这是活动工作簿。工作表无法识别每个工作表”:最好有一个理论来解释这个问题。为什么不在循环中添加一些代码来显示ActiveSheet是否在每次迭代中都在更改?我可以看到它在每次迭代中都没有更改,这就是我为什么这么想的原因。谢谢。哦,是的,我想起来了。不幸的是,FormulaRow位于另一个选项卡上,尝试从非ws选项卡复制会让我大吃一惊。通过添加ws.Select,它不会跳过我不想在其上执行操作的工作表。看起来您肯定从未激活过任何工作表,因此,即使您在后台循环遍历WS数组,原始ActiveSheet仍然保持不变。您可能想退出。选择、.Copy、.Paste在代码中,然后直接设置值。它做了更多的工作,而且在所有的屏幕都在后台闪烁的情况下看起来很邋遢。只需发表声明。Sheets(sheetname).Cells(iRow,iCol)=要设置的值,然后可以使用iRow和iCol作为变量,并执行各种条件检查和循环。如果公式行位于不同的工作表上,则宏记录的不是单向。指定它。表格(“公式表”)。范围(“公式表行”)