繁体   English   中英

使用 Range.Copy 复制单元格

[英]Copying cells with Range.Copy

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

range.copy命令正确复制直接(或由用户表单)输入的数据范围和具有描述性标题的单元格。

包含从工作簿中另一个工作表引用的数据的列P使用错误的单元格引用进行复制。 单元格AB16与来自='[FAVor Study Medication Daily Calculator8.xlsm]Calculations'!AB7的数据一起复制,(不是...AB16 )。 对于该列 ( AB16 - AB22 ) 中的所有 7 个汇总单元格都是如此,但单元格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 中手动复制这些范围,也会发生同样的事情。

解决这个问题的两种选择:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM