VBA粘贴在下一个空行上

时间:2018-10-05 09:05:16

标签: excel vba excel-vba

我试图创建一个我可以填写的工作表,当我单击该按钮时,它会将信息从框中复制并粘贴(和转置)到Rawdata选项卡,然后从仪表板中删除信息并保存文件。

我已经记录了一个简单的宏来为我执行此操作,但问题是我不知道如何获取它以将数据添加到下一个空闲行,它只是替换了已有的信息,这是代码i正在尝试使其实现

Sub Macro5()
'
' Macro5 Macro
'

'
Range("C3:C8").Select
Selection.Copy
Sheets("RawData").Select
Cells(Range("C1000000").End(xlUp).Row + 1, 3).PasteSpecial Paste:=xlValues, 
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Dasboard").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
Range("C3:C8").Select
Selection.ClearContents
End Sub

这里的任何帮助将不胜感激。

我需要它在A:F列中转置粘贴

谢谢

2 个答案:

答案 0 :(得分:2)

我建议阅读How to avoid using Select in Excel VBA。使用.Select是非常糟糕的做法,迟早会导致许多错误:

更好的技术是定义工作表和范围,以便您可以直接通过变量访问它们:

Option Explicit

Public Sub CopyData()
    'define source range
    Dim SourceRange As Range
    Set SourceRange = ThisWorkbook.Worksheets("Dashboard").Range("C3:C8")

    'find next free cell in destination sheet
    Dim NextFreeCell As Range
    Set NextFreeCell = ThisWorkbook.Worksheets("RawData").Cells(Rows.Count, "A").End(xlUp).Offset(RowOffset:=1)

    'copy & paste
    SourceRange.Copy
    NextFreeCell.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

    ThisWorkbook.Save
    SourceRange.ClearContents
End Sub

答案 1 :(得分:1)

尝试不使用Select进行直接值转移。

Sub Macro5()

    dim ws as worksheet

    set ws = workSheets("RawData")

    with worksheets("Dasboard").Range("C3:C8")

        ws.cells(rows.count, "A").end(xlup).offset(1, 0).resize(.columns.count, .rows.count) = _
          application.transpose(.value)
        .clearcontents
        .parent.parent.save

    end with

End Sub