【问题标题】:Copying cells with Range.Copy使用 Range.Copy 复制单元格
【发布时间】:2019-11-20 07:30:00
【问题描述】:

我正在编写一个 Excel 工作簿来获取研究数据,分析每天的价值,然后将输入的数据及其 7 个汇总计算发送到工作簿(命名为测试对象 1,工作表测试 med 1)以进行存档和分析。

range.copy 命令正确地复制了直接(或通过用户窗体)输入的数据范围和带有描述性标题的单元格。

P 列包含从工作簿中的另一个工作表引用的数据,复制时使用了错误的单元格引用。单元格AB16 与来自='[FAVor Study Medication Daily Calculator8.xlsm]Calculations'!AB7 的数据一起复制,(不是...AB16)。该列中的所有 7 个汇总单元格 (AB16 - AB22) 都是如此,但单元格 ab15ab23(对同一工作表上其他单元格的简单引用)被正确复制。

我尝试使用 PasteSpecial 命令,但遇到了另一组问题,接下来我将尝试解决!

我已将问题代码行标记为 ProblemLine:

Dim wsCopyfrom As Worksheet
Dim wsCopyto   As Worksheet
'Dim CopyfromLastRow As Long
'Dim CopytoLastRow As Long
'set variables for copy and dest sheets
Set wsCopyfrom = ThisWorkbook.Sheets("EnterData")
Set wsCopyto = ActiveWorkbook.Sheets(medname)
'Find last used row in the copyfrom based on data in column E and the copyto Col A
CopyfromLastRow = wsCopyfrom.Range("E200").End(xlUp).Row
CopytoLastRow = wsCopyto.Range("A200").End(xlUp).Row
'make copy of range, but ensure that all of the block rows are included, to row 10
If CopyfromLastRow > 19 Then
    wsCopyfrom.Range("A7:P" & CopyfromLastRow).Copy wsCopyto.Range("A" & CopytoLastRow + 1)
Else
    'ProblemLine
    wsCopyfrom.Range("A7:q20").Copy wsCopyto.Range("A" & CopytoLastRow + 1)
End If    'if to copy at least to row 19

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这是预期的“相对参考”行为。如果您自己在 Excel 中手动复制这些范围,也会发生同样的情况。

    解决这个问题的两个选项:

    1. 将工作表上的公式更改为“绝对引用”,例如='[FAVor Study Medication Daily Calculator8.xlsm]Calculations'!$AB$16
    2. 将您的代码更改为不使用Copy,例如

      wsCopyto.Range("A" & CopytoLastRow + 1).Formula = wsCopyfrom.Range("A7:Q20").Formula
      

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2022-12-10
    • 1970-01-01
    • 2020-03-10
    • 2012-08-04
    • 1970-01-01
    • 2018-01-11
    • 2013-07-25
    相关资源
    最近更新 更多