основной код для копирования транспонировать вставить в следующую строку - PullRequest
0 голосов
/ 07 июля 2019

Я заканчиваю трекер.Пользователь завершит вопросы на одном листе - каждый ответ будет находиться в ячейках (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 голосов
/ 07 июля 2019

Один из подходов может быть следующим:

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.

  • Логика (в коде) состоит в том, чтобы найти последнее значение в столбцеА и вставьте в строку сразу ниже.Последнее значение найдено с помощью Range.End(xlUp), и мы получаем доступ к ячейке сразу под ней, используя Range.Offset(1,0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...