五百斤胖头鱼 2022-09-25 22:16 采纳率: 100%
浏览 63
已结题

助:office excle vba 怎么自动在下一行粘贴

本人vba纯小bai,做了个开单表和汇总表,想着开单表填完数据,计算、保存、打印,点保存后怎么在汇总表内之前保存的数据下一行开始保存

图一开单表,右侧三个计算、保存、打印都添加了指定宏,是自己录的。

img

图二为汇总表,每次点完保存后想自动在下一行开始不知道怎么做

img

这是我自己录制的三个宏,稍有改动,请DS们帮我看一下需要怎么修改添加什么代码。抱拳!

1、计算重量和金额

Sub 计算()
'
' 计算 宏
'

'
Range("E5").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=
Range("E5").Select
Selection.AutoFill Destination:=Range("E5:E9"), Type:=xlFillDefault
Range("E5:E9").Select
Range("G5").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=
Range("G5").Select
Selection.AutoFill Destination:=Range("G5:G9"), Type:=xlFillDefault
Range("G5:G9").Select
Range("D10").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=
Range("E10").Select
Application.CutCopyMode = False
Range("G9").Select
Selection.Copy
Range("G10").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("E10").Select
ActiveCell.FormulaR1C1 = "=
Range("G10").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=
Range("B11:G11").Select
End Sub

2、打印,打印后清除开单表内容并且表单号+1

Sub 打印()

ActiveSheet.PrintOut

[h2] = [h2] + 1

Range("A5,B5,C5,D5,A5:G9,G10,E10,D10,D3,B3,F3").Select
Range("F3").Activate
Selection.ClearContents

End Sub

3、保存、将开单表的内容粘贴到汇总表,现在就是每次点完保存不知道怎么能自动跳转下一行开始粘贴,永远的都是覆盖A2-K6

Sub 保存数据()
'
' 保存数据 宏
'

'
Sheets("验收汇总表").Select
Range("A2").Select
ActiveCell.FormulaR1C1 = "=验收开单!R[1]C[1]"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=验收开单!R[1]C[2]"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=验收开单!R[1]C[3]"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=验收开单!R[1]C[4]"
Range("A2:D2").Select
Selection.Copy
Range("A3:D6").Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=验收开单!R[3]C[-4]"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:K2"), Type:=xlFillDefault
Range("E2:K2").Select
Selection.AutoFill Destination:=Range("E2:K6"), Type:=xlFillDefault
Range("E2:K6").Select
End Sub

  • 写回答

3条回答 默认 最新

  • Hello World, 2022-09-26 16:23
    关注

    理论上表单会重复填写,所以写入时不应该使用公式,应该直接写入值,另外建议增加单号,可以更方便管理

    
    Sub 保存数据()
    
        Dim startRowIndex As Integer    '空行开始行号
        Dim itemsCount As Integer       '记录行数
        
        Sheets("验收汇总表").Select
        startRowIndex = Range("A100000").End(xlUp)
        itemsCount = Application.WorksheetFunction.CountA(Sheets("验收开单").Range("A3:A8"))
        
        '没有数据时退出
        If itemsCount = 0 Then Exit Sub
        
        '四列分别取表头数据,因各行相同,一次写入,不能用公式,不然新开单会变化
        Range("A" & startRowIndex & ":A" & startRowIndex + itemsCount - 1).Value = Sheets("验收开单").Range("a2").Value
        Range("B" & startRowIndex & ":B" & startRowIndex + itemsCount - 1).Value = Sheets("验收开单").Range("b2").Value
        Range("C" & startRowIndex & ":C" & startRowIndex + itemsCount - 1).Value = Sheets("验收开单").Range("c2").Value
        Range("D" & startRowIndex & ":D" & startRowIndex + itemsCount - 1).Value = Sheets("验收开单").Range("d2").Value
        
        '复制有数据的行
        Sheets("验收开单").Select
        Range("A4:G8").Select
        Selection.Copy
        Sheets("验收汇总表").Select
        Range("E" & startRowIndex).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        
        '清除表单,不清除可去掉
        Sheets("验收开单").Range("A4:G8").ClearContents
    
    End Sub
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 赞助了问题酬金10元 9月26日
  • 创建了问题 9月25日

悬赏问题

  • ¥50 adb连接不到手机是怎么回事?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目