VBA – 仅复制值

继上一个问题之后,我完全回答了这个问题,现在我已经为我的问题的其余部分写了代码,但是现在我已经出现了问题。

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

在VBA中尝试这样做时,我会在代码的部分代码中尝试select粘贴特殊的目标范围时收到错误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 

popup

任何帮助将受到感谢。

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

恼人的是,这工作以前使用长期select/ Selection.Paste等方法,但由于试图整理代码停止。

提前致谢。

我会做这样的事情

  • NEWCREST作为值转换为数组
  • 将数组转储到TOPSTAT的第一个单元格,并根据需要resize

(除非使用本地范围名称,否则在使用范围名称时不需要图纸名称)

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