VBA - 仅复制值

时间:2013-10-03 12:01:52

标签: excel vba excel-vba

继我之前提出的问题得到了完美解答后,我现在已经为我的问题的其余部分编写了代码,但是我现在已经遇到了问题。

工作表的一部分使用=RAND()生成随机数。由于这是一个易失性函数,我需要将公式的输出复制到一个新位置。如果我手动这样做,我会做一个副本 - >粘贴特殊值,以便我只是去数字,而不是公式。

在VBA中尝试此操作时,当我尝试选择特殊粘贴的目标范围时,我会在部分代码中收到错误1004

以下是代码:

'   Copy Random Questions to Static Page for VLOOKUPS
With Worksheets("Quiz Generator")
    Range("NEWQUEST").Copy
    'Selection.Copy
End With
With Worksheets("Static Question List")
    Range("TOPSTAT").Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End With

我已经尝试过各种方法,使用

RANGE().Select
Selection.Copy
RANGE().Select
Selection.Pastespecial Paste:=xlValues

还使用:

RANGE().Copy
Range().PasteSpecial Paste:=xlValues

在原始代码中我可以通过     Range("TOPSTAT).Select 在它抛出之前

Run-Time error '1004':
Application-defined or object-defined error

弹出

感谢任何帮助。

所有定义的范围都是正确的,并且在名称管理器中,我已尝试使用单元格参考来查看是否是问题的范围名称。

令人讨厌的是,之前使用的是长手Select / Selection.Paste等方法,但是因为它试图整理它停止的代码。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我会做这样的事情,

  • 将范围从NEWCREST转储为数组
  • 将数组转储到TOPSTAT中的第一个单元格并根据需要调整大小

(除非您有本地范围名称,否则在处理范围名称时不需要工作表名称)

<强>代码

Dim x
x = Range("NEWQUEST").Value2
Range("TOPSTAT").Cells(1).Resize(UBound(x, 1), UBound(x, 2)) = x