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,我正在尝试创建一个保存按钮,将以前的答案复制/粘贴到新行。但不仅仅是一个,我希望它尽可能多地节省,将它们列在彼此下面 这只是为了学校的一个项目,制作一份大师级的备忘单 Private Sub Save1_Click() Dim rA5 As范围 Set rA5=ThisWorkbook.Sheets(1).范围(“A5:E5”) 变暗rA7 As射程 Set rA7=ThisWorkbook.Sheets(1)范围(“A7:E7”) 如果(范围(“rA7”).Value“”),则 如果(范围(“

我正在尝试创建一个保存按钮,将以前的答案复制/粘贴到新行。但不仅仅是一个,我希望它尽可能多地节省,将它们列在彼此下面

这只是为了学校的一个项目,制作一份大师级的备忘单

Private Sub Save1_Click()
Dim rA5 As范围
Set rA5=ThisWorkbook.Sheets(1).范围(“A5:E5”)
变暗rA7 As射程
Set rA7=ThisWorkbook.Sheets(1)范围(“A7:E7”)
如果(范围(“rA7”).Value“”),则
如果(范围(“rA7”).Offset(1).Value“”),则
设置rA7=rA7.结束(xlDown)
如果结束
设置rA7=rA7。偏移量(1)
如果结束
rA7.值=rA5.值
端接头
它仅将A5:E5粘贴到A7:E7。 之后它不会下降到A8:E8、A9:E9(依此类推)

您可以尝试:

Option Explicit

Sub test()

    Dim LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1")

        'Check if there is a value in A5
        If .Range("A5").Value <> "" Then
            'Copy range("A5:E5")
            .Range("A5:E5").Copy
            'If range A7 is empty
            If .Range("A7").Value = "" Then
                .Range("A7:E7").PasteSpecial Paste:=xlPasteValues
            Else
                LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
                .Range(.Cells(LastRow + 1, "A"), .Cells(LastRow + 1, "E")).PasteSpecial Paste:=xlPasteValues
            End If
        Else
            MsgBox "There is no available data to be save."
        End If

    End With

End Sub
选项显式
子测试()
最后一排一样长
使用此工作簿。工作表(“表1”)
'检查A5中是否有值
如果.Range(“A5”).值为“”,则
'复制范围(“A5:E5”)
.范围(“A5:E5”).副本
'如果范围A7为空
如果.Range(“A7”).Value=“”则
.范围(“A7:E7”).粘贴特殊粘贴:=XLPasteValue
其他的
LastRow=.Cells(.Rows.Count,“A”).End(xlUp).Row
.Range(.Cells(LastRow+1,“A”),.Cells(LastRow+1,“E”))。粘贴特殊粘贴:=XLPasteValue
如果结束
其他的
MsgBox“没有要保存的可用数据。”
如果结束
以
端接头

根据您对自己问题的评论,您似乎希望新计算的值位于顶行,而其余的值向下推一行。如果这是正确的,那么@Error1004 answer将无法工作,因为它会将您的值粘在最后。以下是他的代码,添加了一个反向循环,将新值粘贴在顶行并向下推:

子测试()
最后一排一样长
作为整数的Dim i
使用此工作簿。工作表(“表1”)
'检查A5中是否有值
如果.Range(“A5”).值为“”,则
'复制范围(“A5:E5”)
.范围(“A5:E5”).副本
'如果范围A7为空
如果.Range(“A7”).Value=“”则
.范围(“A7:E7”).粘贴特殊粘贴:=XLPasteValue
其他的
LastRow=.Cells(.Rows.Count,“A”).End(xlUp).Row
i=最后一行
我7岁以上的时候做
.Range(“A”&(i+1)&“:E”&(i+1)).Value=.Range(“A”&(i&“:E”&i).Value
i=i-1
环
.范围(“A7:E7”).值=.范围(“A5:E5”).值
如果结束
其他的
MsgBox“没有要保存的可用数据。”
如果结束
以
端接头

当我从@Error1004的答案中找出这段代码时,我把它归功于@Error1004。

你能提供一张有理想结果的图片吗?添加了图片。我希望下一个答案保存在数字1下。因此,您可以跟踪自己的计算历史。我认为您希望使用一个有效的循环。谢谢,我将尝试了解您的代码是如何工作的,因为我对这一点非常陌生。谢谢你的帮助!