在 VBA 中复制整行时是否可以排除某些列?

Is it possible to exclude certain columns when copying an entire row in VBA?

我目前正在复制特定行,具体取决于它们是否包含特定值。但是,我实际上只想复制一些列而不是整行。最简单的方法是什么?我当前的代码:

Sub output()

Dim i, Lastrow As Long

Lastrow = Sheets("Dec").Range("A" & Rows.Count).End(xlUp).Row

'Looping from tenth row to last row

For i = 7 To Lastrow

If Sheets("Dec").Cells(i, "AQ").Value = "Shortage" Or Sheets("Dec").Cells(i, "AQ").Value = "Customer" Then
    Sheets("Dec").Cells(i, "AQ").EntireRow.Copy Destination:=Sheets("Action").Range("A" & Rows.Count).End(xlUp).Offset(1)


End If
Next i

Sheets("Action").Activate


End Sub


假设以下数据:

如果您想复制列 A、B、C 和 G、H,您可以使用 Range("A1:C1,G1:I1").Copy 来完成。如果您随后使用 Range("A3").Paste 将其粘贴到 A3 中,您将得到

但是如果您希望它粘贴时 D、E、F 列为空,如下所示

然后你必须一个接一个地复制和粘贴每个范围(你不能一步完成)

Range("A1:C1").Copy
Range("A3").Paste

Range("G1:I1").Copy
Range("G3").Paste

当然,您也可以复制整行并清除 D、E、F 列。

您可以使用 Union 函数合并至少两个区域或单元格

Private Const column1 As String = "A"
Private Const column3 As String = "C"
Private Const column5 As String = "E"
Private Const column7 As String = "G"

Sub Button1_Click()
    Dim i As Long
    Dim unionRange As Range
    Dim rangeSelection As String

    i = 1
    rangeSelection = column5 & i & ":" & column7 & i


    Set unionRange = Union(Cells(i, column1), Cells(i, column3), Range(rangeSelection))
    unionRange.Select
    unionRange.Copy

    Range(column1 & "2").PasteSpecial    

End Sub