gpt4 book ai didi

excel - 使用 vba 将数据从一张表复制到另一张表时出错

转载 作者:行者123 更新时间:2023-12-04 22:23:54 25 4
gpt4 key购买 nike

Sheet1 复制数据时至Sheet2我正进入(状态

"Run-time error '1004': Application-defined or object-defined error"



我正在使用 vba 代码:
lnRow = 33
Sheets("Sheet1").Range("A3:C14").Copy Destination:=Sheets("Sheet2").Range(Cells(lnRow + 3, 1))

如何从 Sheet1 复制数据至 Sheet2使用 column数字?

最佳答案

实际上有问题的部分是Sheets("Sheet2").Range(Cells(lnRow + 3, 1))它有两个问题。
1.问题
对于Cells没有指定对象在哪个工作表中,因此 VBA 假定 ActiveSheet .和写 Sheets("Sheet2").Range(ActiveSheet.Cells(lnRow + 3, 1)) 一样.
现在如果事件工作表是 不是 Sheet2那么代码将失败,因为 Range对象与 Cells 不在同一工作表中对象,这是不允许的。
2.问题
根据 Worksheet.Range property 的文档它接受 2 个参数 Range(Cell1, Cell2)其中第二个是可选的,但 仅当第一个是地址字符串 .

Cell1

  • A String that is a range reference when one argument is used.
  • Either a String that is a range reference or a Range object when two arguments are used.

这意味着您可以使用以下语法:
  • Range("Address")
  • Range("Address", "Address")
  • Range(Cells(row, column), Cells(row, column))

  • 但你不能使用
  • Range(Cells(row, column))

  • 因为如果只使用一个参数,它必须是一个字符串/地址。实际上最后一个不存在,因为您可以使用 Cells直接不使用 Range : Cells(row, column)
    所以在你的情况下,这意味着你必须使用 Cells直接地:
    Sheets("Sheet2").Cells(lnRow + 3, 1)

    关于excel - 使用 vba 将数据从一张表复制到另一张表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59783232/

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