Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Excel 从一个范围复制行时,会从另一个范围复制相同的行_Excel_Vba - Fatal编程技术网

Excel 从一个范围复制行时,会从另一个范围复制相同的行

Excel 从一个范围复制行时,会从另一个范围复制相同的行,excel,vba,Excel,Vba,我有代码将一行公式错误复制粘贴到另一个工作表 问题在于复制的行: “运行MF公式,复制/粘贴到MF输出表”(下半部分) 它似乎复制了“运行Lago公式,复制/粘贴到Lago输出表”中出错的相同行,即使这些单元格的内容已清除。我搜索了这些行中的任何错误,但没有 同样的代码也适用于其他电子表格 我的理论是,它会记住错误行并重新复制它们,但在第二次运行时应该重置 'Run Formulas for Lago, copy/Paste to Lago Output Sheet With ws lr

我有代码将一行公式错误复制粘贴到另一个工作表

问题在于复制的行:
“运行MF公式,复制/粘贴到MF输出表”(下半部分)

它似乎复制了“运行Lago公式,复制/粘贴到Lago输出表”中出错的相同行,即使这些单元格的内容已清除。我搜索了这些行中的任何错误,但没有

同样的代码也适用于其他电子表格

我的理论是,它会记住错误行并重新复制它们,但在第二次运行时应该重置

'Run Formulas for Lago, copy/Paste to Lago Output Sheet
With ws
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("AT2:BC" & lrow).Formula = .Range("AT2:BC2").Formula
End With

With Worksheets("Fall").Range("A3:CU" & lrow)
    On Error Resume Next
    Set eRng = .SpecialCells(xlCellTypeFormulas, xlErrors)
    On Error GoTo 0
    If Not eRng Is Nothing Then
        Intersect(.Parent.Range("A:CU"), eRng.EntireRow).Copy
        Worksheets("Lago").Range("A3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    End With
Range("AT3:BC" & lrow).ClearContents

'Run Formulas for MF, copy/paste to MF output sheet
With ws
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("BE2:BN" & lrow).Formula = .Range("BE2:BN2").Formula
End With

With Worksheets("Fall").Range("A3:CU" & lrow)
    On Error Resume Next
    Set eRng = .SpecialCells(xlCellTypeFormulas, xlErrors)
    On Error GoTo 0
    If Not eRng Is Nothing Then
        Intersect(.Parent.Range("A:CU"), eRng.EntireRow).Copy
        Worksheets("MF").Range("A3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    End With
Range("BE3:BN" & lrow).ClearContents
“运行Lago公式,复制/粘贴到Lago输出表
与ws
lrow=.Range(“A”&.Rows.Count).End(xlUp).Row
.Range(“AT2:BC”和lrow)。公式=.Range(“AT2:BC2”)。公式
以
带有工作表(“秋季”)。范围(“A3:CU”和lrow)
出错时继续下一步
设置eRng=.SpecialCells(xlCellTypeFormulas,xlErrors)
错误转到0
如果不是,eRng什么都不是
Intersect(.Parent.Range(“A:CU”)、eRng.EntireRow.复制
工作表(“Lago”).范围(“A3”).粘贴特殊粘贴:=XLPasteValue
Application.CutCopyMode=False
如果结束
以
范围(“AT3:BC”和lrow)。ClearContents
'运行MF公式,复制/粘贴到MF输出表
与ws
lrow=.Range(“A”&.Rows.Count).End(xlUp).Row
.Range(“BE2:BN”和lrow)。公式=.Range(“BE2:BN2”)。公式
以
带有工作表(“秋季”)。范围(“A3:CU”和lrow)
出错时继续下一步
设置eRg=.SpecialCells(xlCellTypeFormulas,xlErrors)
“运行Lago公式,复制/粘贴到Lago输出表
与ws
lrow=.Range(“A”&.Rows.Count).End(xlUp).Row
.Range(“AT2:BC”和lrow)。公式=.Range(“AT2:BC2”)。公式
以
带有工作表(“秋季”)。范围(“A3:CU”和lrow)
出错时继续下一步
设置eRng=.SpecialCells(xlCellTypeFormulas,xlErrors)
错误转到0
如果不是,eRng什么都不是
Intersect(.Parent.Range(“A:CU”)、eRng.EntireRow.复制
工作表(“Lago”).范围(“A3”).粘贴特殊粘贴:=XLPasteValue
Application.CutCopyMode=False
如果结束
以
范围(“AT3:BC”和lrow)。ClearContents
'运行MF公式,复制/粘贴到MF输出表
与ws
lrow=.Range(“A”&.Rows.Count).End(xlUp).Row
.Range(“BE2:BN”和lrow)。公式=.Range(“BE2:BN2”)。公式
以
带有工作表(“秋季”)。范围(“A3:CU”和lrow)
出错时继续下一步

Set eRg=.SpecialCells(xlcelltypeformals,xlErrors)'注意那些
ActiveSheet
引用-它们可能把事情搞砸了。为什么要在工作表(“Fall”)
中使用
,然后使用
ActiveSheet.Cells(Rows.Count,1)。End(xlUp)。Row
?此外,您在同一行中遗漏了一些点来引用您的,如果它引用的是工作表,那么,
Rows.Count,1
应该是
.Rows.Count,1
。看起来你知道如何限定和引用工作表,我建议你去掉所有的
ActiveSheet
,并完全限定你的范围。@SJR谢谢你的提示,我会仔细研究一下,看看这是否是问题所在。@Damian有工作表的
(“Fall”)
,因为我在没有它的情况下遇到了编译引用错误。我还要确保它引用了工作簿中的正确工作表。
ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row
用于确保它使用的是活动工作表上的最后一行。@像SJR所说的那样,不要使用
ActiveSheet
引用您正在使用的所有工作表,然后使用引用。在那之后更新你的代码,如果你仍然有问题,告诉我们确切的位置和能够帮助你的地方。注意那些
ActiveSheet
引用-它们可能会把事情搞砸。为什么你要在工作表(“Fall”)
中使用
,然后使用
ActiveSheet.Cells(Rows.Count,1)。End(xlUp)。Row
?此外,您在同一行中遗漏了一些点来引用您的,如果它引用的是工作表,那么,
Rows.Count,1
应该是
.Rows.Count,1
。看起来你知道如何限定和引用工作表,我建议你去掉所有的
ActiveSheet
,并完全限定你的范围。@SJR谢谢你的提示,我会仔细研究一下,看看这是否是问题所在。@Damian有工作表的
(“Fall”)
,因为我在没有它的情况下遇到了编译引用错误。我还要确保它引用了工作簿中的正确工作表。
ActiveSheet.Cells(Rows.Count,1).End(xlUp).Row
用于确保它使用的是活动工作表上的最后一行。@像SJR所说的那样,不要使用
ActiveSheet
引用您正在使用的所有工作表,然后使用引用。在此之后更新您的代码,如果您仍然有问题,请告诉我们确切的位置,并将能够帮助您。我必须为该范围创建一个新的参考。因此,我在第二个街区将eRng改为eRg,并添加了第二个Dim eRg作为射程。你不应该这样做,尽管你可能会认为这是一个很好的做法。完全同意。它应该在第二个块中重置。尽管如此,仍然对想法和解决方案持开放态度。只是这是一个有效的方法。我必须为这个范围创建一个新的参考。因此,我在第二个街区将eRng改为eRg,并添加了第二个Dim eRg作为射程。你不应该这样做,尽管你可能会认为这是一个很好的做法。完全同意。它应该在第二个块中重置。尽管如此,仍然对想法和解决方案持开放态度。只是这是一个有效的方法。
'Run Formulas for Lago, copy/Paste to Lago Output Sheet
With ws
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("AT2:BC" & lrow).Formula = .Range("AT2:BC2").Formula
End With

With Worksheets("Fall").Range("A3:CU" & lrow)
    On Error Resume Next
    Set eRng = .SpecialCells(xlCellTypeFormulas, xlErrors)
    On Error GoTo 0
    If Not eRng Is Nothing Then
        Intersect(.Parent.Range("A:CU"), eRng.EntireRow).Copy
        Worksheets("Lago").Range("A3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    End With
Range("AT3:BC" & lrow).ClearContents

'Run Formulas for MF, copy/paste to MF output sheet
With ws
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("BE2:BN" & lrow).Formula = .Range("BE2:BN2").Formula
End With

With Worksheets("Fall").Range("A3:CU" & lrow)
    On Error Resume Next
    Set eRg = .SpecialCells(xlCellTypeFormulas, xlErrors) '<---- Changed to eRg from eRng
    On Error GoTo 0
    If Not eRg Is Nothing Then '<---- Changed to eRg from eRng
        Intersect(.Parent.Range("A:CU"), eRng.EntireRow).Copy
        Worksheets("MF").Range("A3").PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
    End With
  Range("BE3:BN" & lrow).ClearContents