Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA宏赢得';t循环浏览工作簿中的工作表_Vba_Excel - Fatal编程技术网

VBA宏赢得';t循环浏览工作簿中的工作表

VBA宏赢得';t循环浏览工作簿中的工作表,vba,excel,Vba,Excel,出于某种原因,循环会运行,但不会从一张工作表移动到下一张工作表——我认为它只是在工作簿的第一张工作表上运行了大约十次相同的代码(因为我有10张工作表)。如果我删除循环,它会运行一次并关闭,这样代码就可以识别该循环,它就不会跟随它。我已经尝试了以上的变体,但每次都会遇到相同的问题。并非循环中的所有范围引用都适用于ws Sub CullData(): Dim ws As Worksheet Dim Counter As Integer Dim obsoleterows As Range For

出于某种原因,循环会运行,但不会从一张工作表移动到下一张工作表——我认为它只是在工作簿的第一张工作表上运行了大约十次相同的代码(因为我有10张工作表)。如果我删除循环,它会运行一次并关闭,这样代码就可以识别该循环,它就不会跟随它。我已经尝试了以上的变体,但每次都会遇到相同的问题。

并非循环中的所有范围引用都适用于
ws

Sub CullData():

Dim ws As Worksheet
Dim Counter As Integer
Dim obsoleterows As Range

For Each ws In ThisWorkbook.Worksheets

For Counter = 1 To 40 Step 2
    ws.Range("P2").Offset(Counter - 1, 0) = ws.Range("I1").Offset(Counter - 1, 0)
    ws.Range("Q2").Offset(Counter - 1, 0) = ws.Range("K1").Offset(Counter - 1, 0)

    If obsoleterows Is Nothing Then
        Set obsoleterows = Rows(Counter)
    Else
        Set obsoleterows = Union(obsoleterows, Rows(Counter))
    End If

Next Counter
obsoleterows.Delete
Set obsoleterows = Nothing

Next ws

End Sub
应该是:

If obsoleterows Is Nothing Then
    Set obsoleterows = Rows(Counter)
Else
    Set obsoleterows = Union(obsoleterows, Rows(Counter))
End If
..否则它只是默认为ActiveSheet

If obsoleterows Is Nothing Then
    Set obsoleterows = ws.Rows(Counter)
Else
    Set obsoleterows = Union(obsoleterows, ws.Rows(Counter))
End If
这样会更安全

obsoleterows.Delete 

非常感谢你!如果你的问题被回答了,请记住接受这就是我们对你说谢谢的方式,并帮助用户识别哪些问题仍然需要回答。
If Not obsoleterows Is Nothing Then obsoleterows.Delete