我想制作一个将公式复制到Q6:Q2500范围内的宏 . 宏插入公式后,它应该只复制>粘贴值 .
[...]
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Range("Q6").Formula = "=IF(INDIRECT(""A""&ROW())="""","""",CONCATENATE(INDIRECT(""A""&ROW()),""/"",INDIRECT(""B""&ROW()),""/"",INDIRECT(""E""&ROW()),""/"",INDIRECT(""P""&ROW())))"
Range("Q6").Copy
Range("Q6:Q2500").PasteSpecial (xlPasteAll)
Range("Q6:Q2500").PasteSpecial xlPasteValues
End Sub
当我运行此宏时,它会按预期插入公式 . 但是当我尝试粘贴值时,我会重复第一个值,直到Q2500 . 我认为这是因为公式更新速度慢 .
我在Stack上看到了另一个线程,但答案是将公式转换为VBA函数 . 我不知道如何转换这个公式 .
有人可以帮我解决这个问题吗?
问候
3 回答
您在计算完成之前进行转换,这会导致问题 .
但是,您首先将
Formula
放置到Cell
,然后将Value
复制到Cell
中 . 这可以缩短为让VBA计算Value
并将其放入Cell
. 如果可以避免,建议不要使用.Copy
和.Paste
.见例子:
您粘贴
Q6
的内容两次,而不是复制整列的值 .对于任何搜索这个的人一般来说,有效地使用以下代码来粘贴值 .