【问题标题】:Copy Range Sheet1 Paste in Active Cell Sheet 2复制范围表 1 粘贴到活动单元格表 2 中
【发布时间】:2018-04-08 13:32:18
【问题描述】:

我正在尝试完成以下工作:

  1. Sheet1:用户单击运行 VBA 的按钮。

  2. Sheet2:VBA 选择 D 列上的第一个非空白单元格

    Range("D" & Rows.Count).End(xlUp).Offset(1).Select

  3. Sheet1:VBA 复制一系列值

    Worksheets("Sheet1").Range("E2:AJ11").Copy

  4. Sheet2:VBA 将复制的范围粘贴到先前选择的活动单元格中。

我尝试粘贴到活动单元格的这部分不起作用:

Worksheets("Results").ActiveCell.PasteSpecial xlPasteValues

有谁知道如何解决这个问题?

非常感谢!

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您的代码可以进行一些改进,但为了保持您的代码并使其正常工作,我会将命令的顺序更改为此,看看是否适合您。

    1. Sheet1:用户单击运行 VBA 的按钮。
    2. Sheet1:VBA 复制一系列值
    3. Worksheets("Sheet1").Range("E2:AJ11").Copy

    然后到第 2 页

    1. Sheet2:VBA 选择 D 列上的第一个非空白单元格
    2. Range("D" & Rows.Count).End(xlUp).Offset(1).Select (或者只是粘贴而不是选择)
    3. Sheet2:VBA 将复制的范围粘贴到之前选择的活动单元格中。

    或者只是跳过困扰你的那一行,而是使用:

    Range("D" & Rows.Count).End(xlUp).Offset(1).pastespecial xlpastevalues
    

    (根据需要调整,这是为了值)

    或者使用这样的东西:

    Sub Copy()
    
    Dim LastRow As Long
    Dim Results As Worksheet
    
        Set Results = Sheets("Results")
        LastRow = Results.Cells(Results.Rows.Count, "D").End(xlUp).row
    
        Range("E2:AJ11").Copy
        Results.Range("D" & LastRow + 1).PasteSpecial xlPasteAll
    
        Application.CutCopyMode = False
    End Sub
    

    【讨论】:

    • 感谢您的快速回复,卡尔!我的主要问题是用户不想去Sheet2。用户在 Sheet1 上运行另一个 VBA,每次运行时,需要复制的值都会更新。我希望让它工作,以便用户在 Sheet1 上执行所有操作,而无需在工作表之间来回切换......
    • 好的,我在这里添加了一些其他应该易于阅读的代码。 BR。
    【解决方案2】:

    试试这个。

    Dim i as Integer
    i = 1
    
    Do while cells(i,4) <> ""
        Range("D" & Rows.Count).End(xlUp).Offset(1).Select
        Worksheets("Sheet1").Range("E2:AJ11").Copy
        i = i + 1
    Loop
    

    【讨论】:

    • 谢谢,珍娜! :) 我遇到了一个错误,但没关系,之前的回复对我有用。希望你有一个美好的夜晚!
    • 删除 Do While 中的 not。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 2018-09-06
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多