首页 文章

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

提问于
浏览
0

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

输入表格式:

名称 - 单元格J5

日期单元格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 回答

  • 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
    

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

相关问题