【发布时间】:2014-06-19 18:48:01
【问题描述】:
我一直遇到错误(发生这种错误时没有规律或无法察觉的原因)。当我尝试执行 pastespecial(公式或值)时会发生错误。我很好奇是否有另一种方法可以在 VBA 中粘贴值或公式,因为数组中的行数是可变的(1 到 ~100)。我附上了下面代码的sn-p。
'长度和选择区域都定义为字符串
Range("P1").Select
'length是单元格中计算表格长度的公式
length = ActiveCell.Value
selectionarea = "B3:CM" + length
Range("B2:CM2").Select
Selection.Copy
Range(selectionarea).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
selectionarea = "C2:O" + length
Range(selectionarea).Select
Selection.Copy
Range("BL3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
【问题讨论】:
-
出现错误时
length的值是多少?您应该使用&在 VBA 中连接字符串。不推荐+。它在哪一行失败? -
当它失败时(不是每次都失败),它会在 pastespecial(值或公式)上失败。
-
当它失败时,
length的价值是什么? -
它还在同一个工作表和工作簿中进行整个复制和粘贴。我会将 + 长度更改为 & 长度...不过我认为这不是错误的原因。
-
粘贴区域必须与复制区域兼容。这意味着,如果您要从 B2 复制到 CM2,那就是一行。然后粘贴区域的列数和行数必须相同。