Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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,我正在从一个工作表(B14:I14)复制一个范围,并将值粘贴到第一个空行的另一个工作表中。如果该范围的第一个单元格中有数据(B14),则此操作正常 当某些单元格中有数据,但B14中没有数据时,下次它粘贴到与上次执行宏时相同的行上时 范围会有所不同,包括所有单元格都包含数据或只有两个单元格。我需要它检查目标行是否为空,而不仅仅是第一个单元格 这是我的宏: Sub Save7() Dim NextRow As Range With Sheets("Sheet3") S

我正在从一个工作表(
B14:I14
)复制一个范围,并将值粘贴到第一个空行的另一个工作表中。如果该范围的第一个单元格中有数据(
B14
),则此操作正常

当某些单元格中有数据,但B14中没有数据时,下次它粘贴到与上次执行宏时相同的行上时

范围会有所不同,包括所有单元格都包含数据或只有两个单元格。我需要它检查目标行是否为空,而不仅仅是第一个单元格

这是我的宏:

Sub Save7()
    Dim NextRow As Range
    With Sheets("Sheet3")
        Set NextRow = .Cells(.Rows.Count, 2).End(xlUp).Offset(1, 0)
    End With
    Sheet1.Range("B14:I14").Copy
    NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
    Application.CutCopyMode = False
    Set NextRow = Nothing
End Sub

我建议使用这个:

Sub Save7()
    Dim NextRow As Range
    Set NextRow = Range("B" & Sheets("Sheet3").UsedRange.Rows.Count + 1)
    Sheet1.Range("B14:I14").Copy
    Sheet3.Activate
    NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
    Application.CutCopyMode = False
    Set NextRow = Nothing
End Sub

这应该很有效。UsedRange检查所有列,因此如果B为空,则不会覆盖它。唯一的问题是,如果第一行是空的,但您可以在那里添加标题数据,或者其他什么,这样它就不会再被它打扰了。当第一行为空时,UsedRange.Rows.Count仍输出1。享受吧

我建议使用这个:

Sub Save7()
    Dim NextRow As Range
    Set NextRow = Range("B" & Sheets("Sheet3").UsedRange.Rows.Count + 1)
    Sheet1.Range("B14:I14").Copy
    Sheet3.Activate
    NextRow.PasteSpecial Paste:=xlValues, Transpose:=False
    Application.CutCopyMode = False
    Set NextRow = Nothing
End Sub

这应该很有效。UsedRange检查所有列,因此如果B为空,则不会覆盖它。唯一的问题是,如果第一行是空的,但您可以在那里添加标题数据,或者其他什么,这样它就不会再被它打扰了。当第一行为空时,UsedRange.Rows.Count仍输出1。享受吧

天哪,这很好用。谢谢你们两位。我可以等着把它拆开,这样我就能理解代码了。谢谢谢谢你的反对票?似乎工作得很好。我很想知道我做错了什么。我道歉,我不想否决投票。一定是鼠标点击不好。我非常感谢你的帮助。它工作得很好,你的解释也很好。谢谢你,天哪,这个很好用。谢谢你们两位。我可以等着把它拆开,这样我就能理解代码了。谢谢谢谢你的反对票?似乎工作得很好。我很想知道我做错了什么。我道歉,我不想否决投票。一定是鼠标点击不好。我非常感谢你的帮助。它工作得很好,你的解释也很好。非常感谢。