复制转置粘贴到下一行的基本代码

时间:2019-07-07 16:47:12

标签: excel vba copy paste transpose

我正在完成一个跟踪器。用户将在一张纸上完成问题-每个答案将在单元格(B2-B8)中,并复制到另一张纸的一行中。我想粘贴到下一个可用行。

我尝试过复制范围(B2-B8),然后粘贴transpose = True的代码。这是一个错误。接下来,我尝试应对每个单元格并粘贴每个单元格。但不确定如何将粘贴内容添加到下一行。我不记得该代码用于创建具有设定范围的循环,或者该代码添加至下一个可用行。

Range("B2").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A5").Select
ActiveSheet.Paste
Sheets("Settlement Request").Select
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Range("B5").Select
ActiveSheet.Paste
Sheets("Settlement Request").Select
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet2").Select
Range("C5").Select
ActiveSheet.Paste

我还没走那么远。当我尝试transpose = true时,出现编译错误。

1 个答案:

答案 0 :(得分:0)

一种方法可能是:

Option Explicit

Sub TransferAnswersToSomeSheet()

    ' Copying a vertical range (on "Settlement Request" sheet)
    ' and pasting to a horizontal range (on "Sheet2" sheet).

    Dim sourceSheet As Worksheet
    Set sourceSheet = Worksheets("Settlement Request") ' If there is a workbook, specify it too e.g. ThisWorkbook or Workbooks("someWorkbookName")

    Dim destinationSheet As Worksheet
    Set destinationSheet = Worksheets("Sheet2") ' If there is a workbook, specify it too e.g. ThisWorkbook or Workbooks("someWorkbookName")

    Dim cellToPasteTo As Range
    Set cellToPasteTo = destinationSheet.Cells(destinationSheet.Rows.Count, "A").End(xlUp).Offset(1, 0)

    sourceSheet.Range("B2:B8").Copy
    cellToPasteTo.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True

    Application.CutCopyMode = False
End Sub
  • 上面的代码将粘贴为值(同时保留原始数字格式)。如果这不适合您,则可以使用以下显示的选项替换代码中的xlPasteValuesAndNumberFormatshttps://docs.microsoft.com/en-us/office/vba/api/excel.xlpastetype

  • 逻辑(在代码中)是在A列中找到最后一个值并将其粘贴到紧接在下面的行中。使用Range.End(xlUp)找到最后一个值,然后使用Range.Offset(1,0)访问它下面的单元格。