复制和粘贴范围的转置

Copy and Past Transpose of a Range

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

我正在尝试让它工作,这样它就可以复制并粘贴输入的数据,而无需在每次添加新信息时手动更改代码,因为这最终会将一堆信息加载到 "Report" 本身,因此无法手动复制粘贴数据或更改代码。我知道问题出在代码的 Copy 行中的 lRow,我只是不确定它是什么。

一起使用
  • 简化,以 (".") 开头的所有内容均指 objectWith 语句中。
  • 在没有 With 语句的版本中,以 dot (".") 前面应该有 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

编辑:

  • 您可以对另一个工作表执行相同的操作。
  • 使用 .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