【问题标题】:Copy and pasting a range of cells from one worksheet to another将一系列单元格从一个工作表复制并粘贴到另一个工作表
【发布时间】:2013-12-23 09:57:27
【问题描述】:

我是 VBA 新手。我正在尝试将单元格 J9:J22 和单元格 E7 从“最终输出表”复制到“已保存结果”表。下面是我写的宏。它没有显示任何错误,但在运行它时,单个单元格 E7 被粘贴,但是 J9:J22 没有,它显示为空白。你能帮忙吗?

Private Sub CommandButton1_Click()
Dim noofboxes As Range, Depot As String
Worksheets("Final Output Sheet").Select
Set noofboxes = Worksheets("Final Output Sheet").Range("J9:J22")
Depot = Range("E7")
Worksheets("Saved Results").Select
Worksheets("Saved Results").Range("A1").Select
If Worksheets("Saved Results").Range("A1").Offset(1, 0) <> "" Then
Worksheets("Saved Results").Range("A1").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Depot
ActiveCell.Offset(0, 3).Activate
ActiveCell.Value = noofboxes
End Sub

【问题讨论】:

  • 你真的应该避免像这样使用Select。见this
  • 您应该使用 Range.Copy 和 Range.Paste 方法来复制/粘贴数据。
  • 您是否尝试过F8 在“局部变量”窗口/窗格处于活动状态的情况下单步执行代码,以便查看变量包含的内容?
  • 马克:你能详细说明一下吗?

标签: excel vba


【解决方案1】:

这个怎么样:

Private Sub CommandButton1_Click()
    Dim target As Range
    With Worksheets("Saved Results")
        If .Range("A1").Offset(1, 0) <> "" Then
            Set target = .Range("A1").End(xlDown)
        Else
            Set target = .Range("A1")
        End If

        Worksheets("Final Output Sheet").Range("E7").Copy Destination:=target.Offset(1, 0)
        Worksheets("Final Output Sheet").Range("J9:J22").Copy Destination:=target.Offset(0, 3)
    End With
End Sub

【讨论】:

  • 感谢 Alex 的回复,但代码存在一些问题: 1) J9:J22 单元格没有粘贴在粘贴 E7 的单元格前面;他们被粘贴在其上方的一个单元格 2)当我再次运行宏时,新结果不应与现有结果重叠,但应在其下方
  • (1) 更改为Offset(1, 3)? (2) 不明白你的意思?
  • 我将再次解释第二次查询:当我第一次运行宏时,它会复制结果,然后如果单元格 J9:J22 中的数据发生变化并且我再次运行宏,我希望它是粘贴在第一个结果下方而不是上方。
猜你喜欢
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多