1

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

工作表的一部分用于=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 等方法有效,但自从尝试整理代码后它就停止了。

提前致谢。

4

1 回答 1

0

我会做这样的事情,

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

(使用范围名称时不需要工作表名称,除非您有本地范围名称)

代码

Dim x
x = Range("NEWQUEST").Value2
Range("TOPSTAT").Cells(1).Resize(UBound(x, 1), UBound(x, 2)) = x
于 2013-10-03T12:21:32.920 回答