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

basic code for copy transpose paste to next row

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

我试过复制范围 (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 时出现编译错误。

一种方法可能是:

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
  • 上面的代码将粘贴为值(同时保留原始数字格式)。如果这不适合您,您可以将代码中的 xlPasteValuesAndNumberFormats 替换为此处显示的选项:https://docs.microsoft.com/en-us/office/vba/api/excel.xlpastetype.

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