【问题标题】:Excel: Creating a macro to copy&paste active selection into another worksheetExcel:创建宏以将粘贴活动选择复制到另一个工作表中
【发布时间】:2020-10-13 20:38:13
【问题描述】:

这是我在这里的第一个问题,所以请善待。

免责声明:我对 Excel 中的宏构建也很陌生,所以如果我要求澄清,请不要生气。

我开始制作一个项目跟踪器,但遇到了以下问题: 我想要一个按钮,允许我在一个工作表上复制活动选择(单个单元格或一行)并将其粘贴到一个工作簿中的另一个工作表中。

我实际上想要做的是有可能只选择某个任务,单击按钮并将其复制/粘贴到不同的工作表中。因此,据我了解,代码需要是一个循环(?),它还需要偏移,以便我可以粘贴多个任务并且它们不会相互覆盖。

我现在设法搜索到的代码在 Activecell.Offset 行上给了我运行时错误 1004,我不知道为什么。

Sub MoveToWeekly()
Sheets("Test1").Select
    Selection.Copy

    Sheets("Test2").Select

    Sheets("Test2").Range("A1:A4").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1).Select
    
    

    Selection.PasteSpecial _
        Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub

如果能得到一些帮助,我会非常高兴,但很抱歉我说的不是很具体。

【问题讨论】:

  • ActiveCell 很可能是该点上列中的最后一个单元格。您可以使用Debug.Print ActiveCell.Address 进行验证。
  • 感谢您的快速回复!确实是列的最后一个单元格,只是不知道为什么会跳到那里。
  • 通常你使用End(xlUp)来查找最后一行,见this
  • 非常感谢,非常感谢。

标签: excel vba selection paste


【解决方案1】:

这是一种方法

Sub MoveToWeekly()

    'make sure a range is selected
    If typeName(selection)<>"Range" Then
         Msgbox "First select a range"
         Exit sub
    End If

    'you can assign the value between the two ranges directly, without copy/paste
    'Note: assumes there's always a value in ColA on the destination sheet
    with Selection
        'Starting at the bottom of the sheet and using xlUp is 
        '    typically safer than using xlDown
        Sheets("Test2").Cells(rows.count,1).end(xlup).offset(1,0) _ 
              .resize(.rows.count, .columns.count).value = .value
    End with

End Sub

【讨论】:

  • 谢谢你,蒂姆!像魅力一样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多