gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:58:09 25 4
gpt4 key购买 nike

我正在尝试从“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' 应用程序定义或对象定义错误。

我愿意对我的任何尝试进行更正/评论,我只是想避免使用 .Select 和 .Activate。

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

最佳答案

编码风格可以有很大的不同。这是一种方法来做你正在寻找的东西:

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

关于vba - 将动态范围从一个工作表复制并粘贴到另一个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40090419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com