按工作表索引将一个Excel工作表复制到第二个工作表

时间:2019-06-02 14:14:17

标签: excel vba copy

  1. 我想使用对活动工作表(而不是工作表名称)的引用从一个Excel工作表复制到同一工作簿中的另一个工作表。
  2. 我想通过变量引用目标范围。

我还没有找到任何例子。

  1. 我尝试设置

currentSheet = ActiveSheet.Name,

在行

Worksheets(currentSheet).Range("A1").Copy Worksheets("Report").Range("A1")"currentSheet"currentSheet

  1. 我有以下内容可以找到下一个空行
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
printRow = LastRow + 2

同样,我尝试将.Range("A1")设置为.Range("PrintRow").Range(PrintRow)

Sub CopyAndPrintToReport()
    'Find the last used row in a Column: column A in this example
     Dim LastRow As Long
     Dim printRow As Long
     Dim currentSheet As String
     currentSheet = ActiveSheet.Name

     Worksheets("Report").Activate
     With ActiveSheet
         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
     End With

     printRow = LastRow + 2    

     Worksheets(currentSheet).Range("A1").Copy_ 
         Worksheets("Report").Range(printRow)

End Sub

我需要通过currentSheet = ActiveSheet.Name引用活动工作表,并通过printRow引用目标范围。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果设置了变量,则无需使用双引号来引用它(它将不起作用)。

虽然还可以在变量中存储和使用工作表的名称,但通常最好将工作表本身声明为变量并使用它(或者至少在这种情况下,肯定是这样)。

Sub CopyAndPrintToReport()    
     Dim LastRow As Long
     Dim printRow As Range
     Dim currentSheet As Worksheet
     Set currentSheet = ActiveSheet

     With Worksheets("Report")
         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
         Set printRow = .Range(.Cells(LastRow + 2, "A"), .Cells(LastRow + 2, "A"))
         'Set printRow = .Cells(LastRow + 2, "A")
         'Set printRow = .Range("A" & LastRow + 2)
     End With

     currentSheet.Range("A1").Copy printRow
End Sub

可能值得将变量重命名为sourceSheet而不是currentSheet之类的东西,但这随时间而来。

我已将printRow设置为选择范围(大于一个单元格)的方式,但是在注释中看到了对单个单元格执行相同操作的替代方法。

请让我知道我能否进一步提供帮助。