输入表格,Excel,VBA复制输入并粘贴到另一个工作表中

时间:2019-02-11 20:47:36

标签: excel vba

在尝试执行复制和粘贴操作时,我尝试减少使用.select.paste。我知道使用循环更容易。我正在尝试从工作表“条目”中复制一系列单元格,并将其粘贴到名为“输入”的工作表中。我遇到的问题是我想将数据粘贴到连续的单元格中。

这是我到目前为止的内容:

Dim i as Byte, y as Byte, x as integer 

For i = 3 to 3 
    For y = 3 to 17
      x = x +1 

      Sheets("input").Cells(29,x).value = Sheets("Entry").Cells(y,i).value

     Next y 
Next i

要复制的单元格之间有一个空单元格,如下所示:

Entry Cells that are copied

当我将它们粘贴到“输入”选项卡中所需的范围时,将其粘贴如下:

Input Paste

我正在尝试获取它,以便在粘贴时将其连续粘贴到“输入”工作表中,如下所示:

Consecutive Cells

1 个答案:

答案 0 :(得分:1)

是的,您是正确的做法,通常是避免在VBA代码中使用.select和.Paste,这是正确的做法,因为它们需要花费更长的时间来处理,并且通常是不必要的。在您的情况下,使用for循环可能会更容易,该循环遍历一系列单元格并将它们复制到另一张纸上。这使您可以检查该单元格是否包含任何东西,如果它不包含任何东西,则可以跳过它。这是一个示例:

Sub CopyCells()

    Dim rng As Range, cell As Range, copyToCell As Range

    Set rng = ThisWorkbook.Sheets("Entry").Range("A1:A10") 'This is the range you want to copy from
    Set copyToCell = ThisWorkbook.Sheets("inputs").Range("A1") 'This is the first cell in the range you want to copy to

    For Each cell In rng
        If cell.Value <> "" Then 'Only copy from cells that are not blank
            copyToCell.Value = cell.Value
            Set copyToCell = copyToCell.Offset(0, 1) 'Move the copy to cell over by one column (or by row if you prefer)
        End If
    Next cell

End Sub