Копирование и прошлая транспонирование диапазона - PullRequest
0 голосов
/ 05 января 2019
Sub CommandButton2_Click()

    Dim Report As Workbook
    Dim book As Workbook: Set book = ThisWorkbook
    Dim myfilename As String
    Dim lRow As Long

    Set Report = Workbooks.Open("S:\HR Compensation\Christapher Martin\Tellurian 
    Inc Job Pricing\Job Families and Competencies - Report.xlsm")

    lRow = book.Sheets(2).Cells(Rows.Count, 3).End(xlUp).Row

    book.Sheets(2).Range(Cells(8, 3), Cells(lRow, 3)).Copy
    Report.Sheets(1).Range("B2").PasteSpecial Transpose:=True

End Sub

Я пытаюсь заставить это работать, чтобы оно копировало и вставляло введенные данные без необходимости вручную изменять код каждый раз, когда добавляется новая информация, потому что это в конечном итоге загрузит кучу информации в «Отчет» как таковой, поэтому ручное копирование данных вставки или изменение кода не будет возможным. Я знаю, что проблема с строкой lRow в коде кода, я просто не уверен, что это такое.

1 Ответ

0 голосов
/ 05 января 2019

Использование с

  • Упрощенно, все, что начинается с точка (". "), относится к объект в операторе With.
  • В вашей версии без оператора With все, что начинается с точка (". ") должна предшествовать book.Sheets(2)
  • Не уверен, что «Tellurian Inc» с или без SPACE. Правильный при необходимости.

Код

Sub CommandButton2_Click()

    Dim Report As Workbook
    Dim lRow As Long

    Set Report = Workbooks.Open("S:\HR Compensation\Christapher Martin\" _
            & "Tellurian Inc Job Pricing\Job Families and Competencies " _
            & "- Report.xlsm")

    With ThisWorkbook.Sheets(2)
        lRow = .Cells(.Rows.Count, 3).End(xlUp).Row
        .Range(.Cells(8, 3), .Cells(lRow, 3)).Copy
    End With

    Report.Sheets(1).Range("B2").PasteSpecial Transpose:=True

    Application.CutCopyMode = False

End Sub

EDIT:

  • Вы можете сделать то же самое с другим рабочим листом.
  • С .Parent вы имеете в виду объект более высокого уровня, например, ты хочешь чтобы сохранить изменения и закрыть книгу, но вы имеете в виду Sheets(1) сейчас, который вы не можете закрыть, поэтому с .Parent вы ссылаетесь на более высокий уровень, который является рабочей книгой (Report). В целях безопасности я оставил комментарий.

Sub CommandButton2_Click()

    Dim Report As Workbook
    Dim lRow As Long

    Set Report = Workbooks.Open("S:\HR Compensation\Christapher Martin\" _
            & "Tellurian Inc Job Pricing\Job Families and Competencies " _
            & "- Report.xlsm")

    With ThisWorkbook.Sheets(2)
        lRow = .Cells(.Rows.Count, 3).End(xlUp).Row
        .Range(.Cells(8, 3), .Cells(lRow, 3)).Copy
    End With

    With Report.Sheets(1)
        .Range("B2").PasteSpecial Transpose:=True
        '.Parent.Close True ' Save changes and close workbook.
    End With

    Application.CutCopyMode = False

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