Excel 从一张图纸到另一张图纸的复制/粘贴范围

Excel 从一张图纸到另一张图纸的复制/粘贴范围,excel,vba,Excel,Vba,我试图将工作表A列中包含数据的单元格复制到第2行的另一个工作表中。使用以下脚本,将源工作表名称输入Ave RLD工作表的第1行。如果这就是我所要做的,它会在所有的工作表中循环,并将它们的名字放在下一列Ave RLD中。当我尝试从col A复制数据并将其粘贴到Ave RLD时,我得到一个运行时错误1004。我留下了我一直在尝试的所有评论行。我错过了什么 Dim WS_count As Long Dim I As Long Dim ws As Worksheet Dim ColNum As Long

我试图将工作表A列中包含数据的单元格复制到第2行的另一个工作表中。使用以下脚本,将源工作表名称输入Ave RLD工作表的第1行。如果这就是我所要做的,它会在所有的工作表中循环,并将它们的名字放在下一列Ave RLD中。当我尝试从col A复制数据并将其粘贴到Ave RLD时,我得到一个运行时错误1004。我留下了我一直在尝试的所有评论行。我错过了什么

Dim WS_count As Long
Dim I As Long
Dim ws As Worksheet
Dim ColNum As Long
Dim wksName As String
Dim NumRows As Long

ColNum = 1

Sheets.Add Type:=xlWorksheet
ActiveSheet.Name = "Ave RLD"

For Each ws In ActiveWorkbook.Worksheets
    If Left(Trim(ws.Name), 3) = "RLD" Then
        wksName = ws.Name
        NumRows = ws.Range("A" & Rows.Count).End(xlUp).Row
        MsgBox NumRows
        With Worksheets("Ave RLD")
            .Cells(1, ColNum).Value = wksName
            ws.Range(Cells(1, 1), Cells(NumRows, 1)).Copy
            .Range(Cells(2, ColNum)).Paste.Values
            '.Range(Cells(2, ColNum)).Value = .Range(("A1"), Range("A1").End(xlUp))
            '.Range(Cells(2, ColNum)).Value = ws.Range("A" & Rows.Count).End(xlUp).Row
            'MsgBox ws.Cells(1, 26).Value
            '.Cells(2, ColNum).Value = .Worksheets(wksName).Cells(1, 26)
            '.Worksheets(wksName).Cells(1, 1).Copy
            'Worksheets(wksName).Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Copy
            '.Cells(2, ColNum).Paste
            
            ColNum = ColNum + 1
        End With
    End If
Next ws

这是你想要的吗

此站点上的批次,但如果
ws
不是活动工作表,则此行将出错,因为您没有完全限定所有范围

ws.Range(单元格(1,1),单元格(NumRows,1)).Copy

下面注释的另一行只需要
范围
单元格
,而且您的粘贴值语法已关闭-录制宏是整理此类详细信息的一种方法

Dim WS_count As Long
Dim I As Long
Dim ws As Worksheet
Dim ColNum As Long
Dim wksName As String
Dim NumRows As Long

ColNum = 1

Sheets.Add Type:=xlWorksheet
ActiveSheet.Name = "Ave RLD"

For Each ws In ActiveWorkbook.Worksheets
    If Left(Trim(ws.Name), 3) = "RLD" Then
        wksName = ws.Name
        NumRows = ws.Range("A" & Rows.Count).End(xlUp).Row
        MsgBox NumRows
        With Worksheets("Ave RLD")
            .Cells(1, ColNum).Value = wksName
            ws.Range(ws.Cells(1, 1), ws.Cells(NumRows, 1)).Copy 'fully qualify with ws
            .Cells(2, ColNum).PasteSpecial xlpasteValues 'just Cells
            ColNum = ColNum + 1
        End With
    End If
Next ws

这是你想要的吗

此站点上的批次,但如果
ws
不是活动工作表,则此行将出错,因为您没有完全限定所有范围

ws.Range(单元格(1,1),单元格(NumRows,1)).Copy

下面注释的另一行只需要
范围
单元格
,而且您的粘贴值语法已关闭-录制宏是整理此类详细信息的一种方法

Dim WS_count As Long
Dim I As Long
Dim ws As Worksheet
Dim ColNum As Long
Dim wksName As String
Dim NumRows As Long

ColNum = 1

Sheets.Add Type:=xlWorksheet
ActiveSheet.Name = "Ave RLD"

For Each ws In ActiveWorkbook.Worksheets
    If Left(Trim(ws.Name), 3) = "RLD" Then
        wksName = ws.Name
        NumRows = ws.Range("A" & Rows.Count).End(xlUp).Row
        MsgBox NumRows
        With Worksheets("Ave RLD")
            .Cells(1, ColNum).Value = wksName
            ws.Range(ws.Cells(1, 1), ws.Cells(NumRows, 1)).Copy 'fully qualify with ws
            .Cells(2, ColNum).PasteSpecial xlpasteValues 'just Cells
            ColNum = ColNum + 1
        End With
    End If
Next ws

应该录制一个宏@BigBen应该录一个宏@比本。