将范围设置为公式,然后设置为值
问题描述:
我正在寻找一种更简单的方法,将Excel中的单元格设置为公式,然后是值。下面是我写的一个宏的子集。将范围设置为公式,然后设置为值
Range("InsuredName").Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)"
Range("InsuredName").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
我可以做到这一点,而无需复制,粘贴特殊值?我在模型中有一个输入表,用户输入必要的输入,模型根据这些输入执行某些计算。我已经构建了可以在稍后保存和检索其输入的功能。因此,根据要求检索指定的一组输入,该宏将公式放入输入选项卡上的相应单元格中,以在存储输入的数据选项卡中执行查找。然后,它将该单元格粘贴到值。对于一些输入重复执行此操作。我认为有一个更简单的方法,但我一直无法弄清楚。
答
使用Evaluate()
方法
Range("InsuredName").Value = Evaluate("INDEX(Data,RetrievalRow,InsuredNameIndex)")
如果没有使用VBA的变量,您也可以使用简写这是方括号:
Range("InsuredName").Value = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
您还可以评估一个命名范围以返回范围ob JECT - 所以同样,你可以用速记表达式:
[InsuredName] = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
答
替换所有与此:
With Range("InsuredName")
.Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)"
.Value = .Value
End With
+0
谢谢您的回复! – DPM
+0
不客气。 –
我喜欢最后一个选项。人们应该在VBA中更多地使用Evaluate(和括号表达式)。它确实使您的代码更加简洁和可读。 – Tmdean
@ExcelHero很好的地方,但我已经把它们全部删除了! –
谢谢!我欣赏指导!我使用了evaluate()方法,一切正常! – DPM