将范围设置为公式,然后设置为一个值

我正在寻找一种更简单的方法,在Excel中将单元格设置为公式,然后是值。 下面是我写的一个macros的子集。

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 

我可以做到这一点,而不必复制,粘贴特殊值? 我在模型中有一个input表,用户input必要的input,模型根据这些input执行特定的计算。 我已经build立了function,可以在以后保存和检索input。 因此,当需要检索一组指定的input时,这个macros会在input标签的相应单元格中input一个公式,以便在存储input的数据选项卡中执行查找。 然后,它将该单元格粘贴到值。 对于一些input重复执行此操作。 我认为有一个更简单的方法,但我一直无法弄清楚。

使用Evaluate()方法

 Range("InsuredName").Value = Evaluate("INDEX(Data,RetrievalRow,InsuredNameIndex)") 

如果没有要使用的VBAvariables,你也可以使用这个方括号的简写:

 Range("InsuredName").Value = [INDEX(Data,RetrievalRow,InsuredNameIndex)] 

您也可以评估一个命名范围来返回范围对象 – 所以您可以使用简写expression式:

 [InsuredName] = [INDEX(Data,RetrievalRow,InsuredNameIndex)] 

全部replace为:

 With Range("InsuredName") .Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)" .Value = .Value End With