Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将动态范围从一个工作表复制并粘贴到另一个工作表_Vba_Excel_Dynamic - Fatal编程技术网

Vba 将动态范围从一个工作表复制并粘贴到另一个工作表

Vba 将动态范围从一个工作表复制并粘贴到另一个工作表,vba,excel,dynamic,Vba,Excel,Dynamic,我正试图从“Sheet1”的第2行开始复制A列,并从第5行开始将其粘贴到“ABC”的第C列。列A中的行数是可变的,因此无法使用固定范围 下面的代码满足我的需要,但我试图避免使用.Select和.Activate LastRow = Range("A" & Rows.Count).End(xlUp).Row Sheets("Sheet1").Range("A2:A" & LastRow).Copy Sheets("ABC").Activate Sheets("ABC").Range

我正试图从“Sheet1”的第2行开始复制A列,并从第5行开始将其粘贴到“ABC”的第C列。列A中的行数是可变的,因此无法使用固定范围

下面的代码满足我的需要,但我试图避免使用.Select和.Activate

LastRow = Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet1").Range("A2:A" & LastRow).Copy
Sheets("ABC").Activate
Sheets("ABC").Range("C5:C" & LastRow).Select
Selection.PasteSpecial xlPasteValues
我尝试使用以下代码将列设置为彼此相等:

  Sheets("ABC").Range("C5").End(xlDown).Value=Sheets("Sheet1").Range("A2:A" & LastRow).Value
此操作运行时没有错误,但“不执行任何操作”--工作表“ABC”上没有显示任何数据

我还试图做到以下几点:

    Dim WS As Worksheet
    Dim wsABC As worksheet


    Set WS = Sheets("Sheet1")
    Set wsABC = Sheets("ABC")
    LastRow = Range("A" & Rows.Count).End(xlUp).Row

    WS.Range("A2:A" & LastRow).Copy
    wsABC.Range("C5").End(xlDown).Paste
这会在此行生成“运行时错误#438对象不支持此属性或方法”错误:

 wsABC.Range("C5").End(xlDown).Paste
我尝试的另一种方法如下:

Dim WS As Worksheet

    Set WS = Sheets("Sheet1")
    Set wsABC = Sheets("ABC")


  With WS
  LastRow = Range("A" & Rows.Count).End(xlUp).Row
  WS.Range("A2:A" & LastRow).value = wsABC.Range("C5:C & LastRow").Value

End With
这会产生“运行时错误‘1004’”应用程序定义或对象定义错误

我愿意接受任何尝试的更正/评论,我只想避免使用。选择并。激活


提前感谢您的时间和帮助!

编码风格可能会有很大的不同。这里有一种方法可以满足您的需求:

Sub tgr()

    Dim wb As Workbook
    Dim wsData As Worksheet
    Dim wsDest As Worksheet

    Set wb = ActiveWorkbook
    Set wsData = wb.Sheets("Sheet1")
    Set wsDest = wb.Sheets("ABC")

    With wsData.Range("A2", wsData.Cells(wsData.Rows.Count, "A").End(xlUp))
        wsDest.Range("C5").Resize(.Rows.Count).Value = .Value
    End With

End Sub
With Worksheets("Sheet 1")
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
        Worksheets("ABC").Range("C5").Resize(.Rows.Count).Value = .Value
    End With
End With