【问题标题】:VBA code for copying and pasting content in multiple worksheets用于在多个工作表中复制和粘贴内容的 VBA 代码
【发布时间】:2018-10-18 06:12:20
【问题描述】:

请帮助我使用宏,将文本从输入表(工作表 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).Select”错误。

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

谢谢

【问题讨论】:

标签: vba excel


【解决方案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

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

【讨论】:

  • 他可能得到了错误,因为如果 A 列中没有数据并且您从 A1 开始并转到 End(xlDown) 您最终会出现在最后一行,因此您不能再进一步 Offset .
  • 是的,这是有道理的!
猜你喜欢
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多