Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 VBA“;“最后一行”;粘贴在彼此的顶部?_Excel_Vba - Fatal编程技术网

Excel VBA“;“最后一行”;粘贴在彼此的顶部?

Excel VBA“;“最后一行”;粘贴在彼此的顶部?,excel,vba,Excel,Vba,我这里有两本工作手册,我已经将我正在处理的每个工作表命名为:wsINPUTS和wsFILLS。仅当特定单元格中的值大于0时,我才尝试将值从wsFILLS复制到wsINPUTS。我想复制到wsINPUTS上,从A2开始,然后直接在先前粘贴的值下面粘贴任何其他值 现在,我的代码正在复制数据并将其粘贴到INPUTS工作表的A2中,而不是直接粘贴在其下方。救命啊 With wsINPUTS LastRow = .Cells(Rows.Count, "A").End(xlUp).Row L

我这里有两本工作手册,我已经将我正在处理的每个工作表命名为:
wsINPUTS
wsFILLS
。仅当特定单元格中的值大于0时,我才尝试将值从
wsFILLS
复制到
wsINPUTS
。我想复制到
wsINPUTS
上,从
A2
开始,然后直接在先前粘贴的值下面粘贴任何其他值

现在,我的代码正在复制数据并将其粘贴到
INPUTS
工作表的
A2
中,而不是直接粘贴在其下方。救命啊

With wsINPUTS
    LastRow = .Cells(Rows.Count, "A").End(xlUp).Row
    LastRow = LastRow + 1
End With

    If wsFILLS.Range("C8") > 0 Then wsFILLS.Range("B4:C9").Copy (wsINPUTS.Range("A" & LastRow))

    If wsFILLS.Range("C16").Value > 0 Then wsFILLS.Range("B11:C16").Copy (wsINPUTS.Range("A" & LastRow))

    If wsFILLS.Range("C23").Value > 0 Then wsFILLS.Range("B18:C23").Copy (wsINPUTS.Range("A" & LastRow))

由于您直接从不同的点粘贴数据,这会自然地更改每个副本后的最后一行,因此您必须在代码中对此进行说明

试试下面的方法

If wsFILLS.Range("C8") > 0 Then wsFILLS.Range("B4:C9").Copy wsINPUTS.Range("A" & wsInputs.Rows.Count).End(xlUp).Offset(1)

If wsFILLS.Range("C16").Value > 0 Then wsFILLS.Range("B11:C16").Copy wsINPUTS.Range("A" & wsInputs.Rows.Count).End(xlUp).Offset(1)

If wsFILLS.Range("C23").Value > 0 Then wsFILLS.Range("B18:C23").Copy wsINPUTS.Range("A" & & wsInputs.Rows.Count).End(xlUp).Offset(1)

将您编写的内容转换为更紧凑的形式,在每次需要时重新计算lastrow变量

If wsFILLS.Range("C8") > 0 Then wsFILLS.Range("B4:C9").Copy (wsINPUTS.Range("A" & wsINPUTS.Cells(Rows.Count, "A").End(xlUp).Row +1))

If wsFILLS.Range("C16").Value > 0 Then  wsFILLS.Range("B11:C16").Copy (wsINPUTS.Range("A" & wsINPUTS.Cells(Rows.Count, "A").End(xlUp).Row +1))

If wsFILLS.Range("C23").Value > 0 Then  wsFILLS.Range("B18:C23").Copy (wsINPUTS.Range("A" & wsINPUTS.Cells(Rows.Count, "A").End(xlUp).Row +1))

您是否询问如何在每次复制后更新
LastRow
?您需要在每次使用最后一行之前放置
LastRow=.Cells(Rows.Count,“A”).End(xlUp)。Row+1
,以继续获取新的最后一行