用于在多个工作表中复制和粘贴内容的VBA代码

时间:2018-05-08 10:10:52

标签: excel vba excel-vba

请帮助我使用宏来将文本从输入表(工作表1)复制并粘贴到同一个Excel文件中的报告表(工作表2)。

输入表格格式:

名称 - 单元格J5

Date-cell J6

启动时间单元格J7

结束时间 - 单元格J8

停机时间 - 单元格J9

我需要一个宏来复制J5:J9并使用转置功能将其粘贴到A2:E2中。 此外,工作表与多个用户共享,因此需要将其粘贴到“报告”表(工作表2)中的最后一个可用行中。

目前,我使用以下宏代码:

Sub Report()

    Sheets("Input").Select
    Range("J5:J9").Select
    Selection.Copy
    Sheets("Reports").Select
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    Sheets("Input").Select
    ActiveWindow.SmallScroll Down:=-5

    Sheets("Input").Select
    Range("J5:J9").Select
    Selection.ClearContents

End Sub

我在" ActiveCell.Offset(1,0)收到错误。选择"在运行宏时。

请告知代码的任何更改,以帮助我解决问题。

由于

1 个答案:

答案 0 :(得分:1)

你可以用几行重写你正在做的所有事情:

Sub Report()
' Copy the range from J5:J9 on INPUT worksheet
ThisWorkbook.Worksheets("Input").Range("J5:J9").Copy
With ThisWorkbook.Worksheets("Reports")
    ' Find the LAST ROW in COLUMN A
    Dim lROW As Long: lROW = .Cells(.Rows.Count, 1).End(xlUp).Row
    ' Paste in cell A-lROW with transpose
    .Range("A" & lROW).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=True
End With
' Clear entry in original INPUT sheet
ThisWorkbook.Worksheets("Input").Range("J5:J9").ClearContents
End Sub

我不确定你为什么会因偏移一行而出错,这对我有用 - 但这可能与你“选择”最后一行的方法有关