Vba 将范围设置为公式,然后设置为值
我正在寻找一种更简单的方法,将Excel中的单元格设置为公式,然后设置为值。下面是我编写的宏的子集Vba 将范围设置为公式,然后设置为值,vba,excel,Vba,Excel,我正在寻找一种更简单的方法,将Excel中的单元格设置为公式,然后设置为值。下面是我编写的宏的子集 Range("InsuredName").Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)" Range("InsuredName").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks
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
我是否可以在不复制、粘贴特殊值的情况下完成此操作?我在模型中有一个输入表,用户输入必要的输入,模型根据这些输入执行某些计算。我有内置的功能,他们可以保存和检索他们的输入在以后的时间。因此,当需要检索指定的输入集时,此宏会将公式放入“输入”选项卡上的相应单元格中,以在存储输入的“数据”选项卡中执行查找。然后,它将这些单元格粘贴到值。对许多输入重复执行此操作。我想有一个更简单的方法,但我还没能找到。用以下内容替换所有内容:
With Range("InsuredName")
.Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)"
.Value = .Value
End With
将所有内容替换为以下内容:
With Range("InsuredName")
.Value = "=INDEX(Data,RetrievalRow,InsuredNameIndex)"
.Value = .Value
End With
使用Evaluate()
方法
Range("InsuredName").Value = Evaluate("INDEX(Data,RetrievalRow,InsuredNameIndex)")
如果没有要使用的VBA变量,也可以使用方括号来表示:
Range("InsuredName").Value = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
您还可以计算命名范围以返回范围对象-因此,您也可以使用速记表达式:
[InsuredName] = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
使用Evaluate()
方法
Range("InsuredName").Value = Evaluate("INDEX(Data,RetrievalRow,InsuredNameIndex)")
如果没有要使用的VBA变量,也可以使用方括号来表示:
Range("InsuredName").Value = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
您还可以计算命名范围以返回范围对象-因此,您也可以使用速记表达式:
[InsuredName] = [INDEX(Data,RetrievalRow,InsuredNameIndex)]
我喜欢最后一个选择。人们真的应该在VBA中更多地使用Evaluate(和括号内的表达式)。它真的让你的代码更简洁易读。谢谢!感谢您的指导!我使用了evaluate()方法,一切正常!我喜欢最后一个选择。人们真的应该在VBA中更多地使用Evaluate(和括号内的表达式)。它真的让你的代码更简洁易读。谢谢!感谢您的指导!我使用了evaluate()方法,一切正常!谢谢你的回复!谢谢你的回复!