【问题标题】:Copy/Pasting Data from one spreadsheet to another将数据从一个电子表格复制/粘贴到另一个电子表格
【发布时间】:2012-12-23 05:04:29
【问题描述】:

好的,我已经研究了大约 4 个小时。我有另一个类似的帖子解决了一个问题,只是为了创建另一个问题。此代码从 2 个电子表格中获取同一列数据。第一次复制/粘贴效果很好(并填充了 A2:A191 行),但之后的第一个循环从 A1332 行开始粘贴该电子表格中的数据? A192:A1331 中的所有单元格都是空白的。代码应该从底部向上查找第一个可用的空单元格。我错过了什么?

这是有问题的代码。我已经验证它解锁了第二个循环电子表格范围单元格,但之后它粘贴错了吗?格式似乎不是问题?牢房中是否有我没有看到的“东西”?

 Set wbkCS = Workbooks.Open(strCutSheetFile(i))
        On Error GoTo 0
        Set wbkVer = Workbooks.Open(strVerifyFile)
        Set copyRng = Worksheets("Cutsheets").Range("A2")
    If copyRng = "" Then
            wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Locked = False
            wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A2")
    Else
            wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Locked = False
            wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy Destination:=wbkVer.Worksheets("Cutsheets").Range("A" & Range("A65536").End(xlUp).Row + 1)
     End If

【问题讨论】:

  • 检查查夫的回答。但是,如果添加 UserInterfaceOnly = true 来保护电子表格,则无需锁定/解锁,因为工作表仅针对用户锁定,而不是 VBA 自动化。

标签: excel vba


【解决方案1】:

尝试在第二个复制语句中限定最后一个范围引用,即:

代替

    .Range("A" & Range("A65536").End(xlUp).Row + 1)

试试

    .Range("A" & wbkVer.Worksheets("Cutsheets").Range("A65536").End(xlUp).Row + 1)

【讨论】:

  • 您可能会在某个时候升级到下一个版本的 Excel,所以我不会在 A65536 中硬编码 ...而是将代码更改为 .Range("A"& wbkVer.Worksheets("Cutsheets").Cells(Rows.count,1).End(xlUp).Row + 1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2018-12-20
  • 1970-01-01
  • 2016-10-06
  • 2019-08-22
  • 1970-01-01
  • 2012-03-04
相关资源
最近更新 更多