如何编辑 VBA 代码以粘贴到不同的位置

Posted

技术标签:

【中文标题】如何编辑 VBA 代码以粘贴到不同的位置【英文标题】:How to edit VBA code to paste in a different location 【发布时间】:2019-08-21 02:03:36 【问题描述】:

我正在根据连续单元格的值分离数据。在此示例中,如果 Y 列中的任何单元格 =“X”,那么它会将整行粘贴到正确的选项卡中。

我正在使用我在此处找到的一些代码,它们可以完美地获取数据并将其转储到新选项卡中。这对于每周生成新数据很有用,但我还想要一个标签,将数据粘贴到现有数据的末尾以保持年度统计。

这是我正在使用的代码。

Sub Paste()

Dim c As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet

Set Source = ActiveWorkbook.Worksheets("Data All")
Set Target = ActiveWorkbook.Worksheets("Data X")

j = 2
For Each c In Source.Range("Y1:Y300")
    If c = "X" Then
       Source.Rows(c.Row).Copy Target.Rows(j)
       j = j + 1
    End If
Next c
End Sub

以我有限的理解,“j = 2”部分似乎意味着它从第2行开始粘贴。

我尝试使用类似的代码将其粘贴到下一个可用行:Last Row Paste to different Worksheet VBA

我使用了“dim lRow As Long”并删除了对 j 的引用,然后尝试制作它

Source.Rows(c.Row).Copy Target.Rows(lRow)

但这似乎不起作用。有人有见识吗?我想让它尽可能简单。

【问题讨论】:

你还需要弄清楚最后一行是什么。 This question 解释了如何做。 你见过THIS这不使用循环... 【参考方案1】:
Sub Jeeped()

'Declare & Set relevant Sheets
Dim wsC As Worksheet: Set wsC = ThisWorkbook.Sheets("Data All")
Dim wsP As Worksheet: Set wsP = ThisWorkbook.Sheets("Data X")

'Declare LR variables and range variables
Dim C As Range, CopyMe As Range
Dim cLR As Long, pLR As Long

'Determine last rows on both sheets
cLR = wsC.Range("Y" & wsC.Rows.Count).End(xlUp).Row
pLR = wsP.Range("A" & wsP.Rows.Count).End(xlUp).Row

'Loop through range and create collection (UNION) of cells
For Each C In wsC.Range("Y1:Y" & wsC)
    If C = "X" Then
        If Not CopyMe Is Nothing Then
            Set CopyMe = Union(CopyMe, C)
        Else
            Set CopyMe = C
        End If
    End If
End If

'If any cells are found, paste them all at once here
If Not CopyMe Is Nothing Then
    CopyMe.EntireRow.Copy
    wsP.Range("A" & pLR).PasteSpecial xlPasteValues
End If

End Sub

【讨论】:

Sub Jeeped - 哈哈。我一直想知道他为什么要销毁他的 SO 帐户。 相同 - 我几乎从头开始学习 VBA,研究他和 Craners 的解决方案。他会得到支持的......总有一天 或者如果你想看到美好的旧时光:web.archive.org/web/20190203105458/https://***.com/… 这是金子!好分享 是的,我希望他有一天能回来!好家伙!

以上是关于如何编辑 VBA 代码以粘贴到不同的位置的主要内容,如果未能解决你的问题,请参考以下文章

VBA复制粘贴到新工作表,If语句和转置

拦截粘贴到(丰富的)编辑控件

怎么把word文档粘贴到编辑器里啊

从 Access VBA 编辑打开的 Excel 工作表

如何复制vim编辑器中的内容粘贴到另一个终端的编辑器里

如何复制vim编辑器中的内容粘贴到另一个终端的编辑器里