代码之家  ›  专栏  ›  技术社区  ›  Matt

Excel宏,用于复制某些单元格中的值并将其粘贴到下一个空单元格中

  •  1
  • Matt  · 技术社区  · 6 年前

    我想制作一个非常简单的宏,它将复制某些单元格中的值(在我的例子中是A1、A5、A9),并将它们粘贴到同一行的下一个空单元格中 比如B1、B5、B9。每次运行都应使用复制的值创建下一个单元格(不覆盖B1、B5、B9,而是将它们放入C1、C5、C9等)

    这是我以前管理的代码

    Private Sub CommandButton4_Click()
    
    
    
    'Use the Range.Copy method for a simple copy/paste
    
        'The Range.Copy Method - Copy & Paste with 1 line
        Range("A1").Copy Range("B1")
        Range("A5").Copy Range("B5")
        Range("A9").Copy Range("B9")
    
    End Sub
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Pᴇʜ    6 年前

    这将A1、A5、A9复制到 下一个 同一行中的空单元格

    Dim i As Long
    For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
        With Range("A" & i)
            If .Offset(0, 1) = vbNullString Then 'if B is empty
                .Copy .Offset(0, 1)
            Else 'find next free cell
                .Copy .End(xlToRight).Offset(0, 1)
            End If
        End With
    Next i
    

    或者在之后复制到单元格 最后的 同一行中使用的单元格

    Dim i As Long
    For i = 1 To 9 Step 4 'loops 1, 5, 9 because of Step 4
        With Range("A" & i)
            .Copy .Parent.Cells(i, .Parent.Cells.Columns.Count).End(xlToLeft).Offset(0, 1)
        End With
    Next i
    

    请注意,我强烈建议指定A1范围在哪个工作表中(对于两种变体): 而不是

    Range("A" & i)
    

    始终指定工作表,如

    Worksheets("SheetName").Range("A" & i)
    
        2
  •  0
  •   Zac    6 年前

    另一种方法是使用后期绑定:

    With ThisWorkbook.Worksheets("Sheet1")
        .Range("A1").Copy .Cells(1, .Cells(1, .Columns.count).End(xlToLeft).Column + 1)
        .Range("A5").Copy .Cells(5, .Cells(5, .Columns.count).End(xlToLeft).Column + 1)
        .Range("A9").Copy .Cells(9, .Cells(9, .Columns.count).End(xlToLeft).Column + 1)
    End With