运行时错误1004将INDEX公式放入单元格

时间:2016-12-26 16:03:55

标签: excel excel-vba vba

我在Excel模板中有一个动态验证列表,默认显示运行excel文件的“user”(使用公式=INDEX(user; 1),用户是{{ 1}}首先显示当前“user”

模板完全填满后,工作表将被复制到新文件中,新文件将通过电子邮件发送。

因为“user”在新文件打开时发生了变化,所以我需要在复制工作表之前将验证中的值粘贴到模板中。

我的想法是因为模板可以被清除以便重复使用,以便将公式重新输入到单元格中。我尝试使用name range,但我得到了Worksheets("template").Range("D3").Formula = "=INDEX(user; 1)"

请指教。我提出了更广泛的想法,以便为我正在努力实现的目的提供替代解决方案。

1 个答案:

答案 0 :(得分:0)

我建议使用适当的FileFormat {将“Excel模板”工作簿保存为真实Excel模板 {1}} 如果模板有宏或 xlOpenXMLTemplateMacroEnabled ,如果它没有宏)

如果使用程序保存模板,您可以使用以下行:

xlOpenXMLTemplate

当用户双击工作簿模板时,会打开原始模板工作簿的副本,原始模板保持不变,因此无需重置公式以便重复使用。

如果通过程序打开模板,而不是用户的双击,则使用以下行:

ActiveWorkbook.SaveAs _
    Filename:="Workbook FullName.xltm", _
    FileFormat:=xlOpenXMLTemplateMacroEnabled, _
    Password:="If Required", WriteResPassword:="If Required", _
    ReadOnlyRecommended:=False, CreateBackup:=False

    Rem Replace these lines if template has no macros
    'Filename:="Workbook FullName.xltx", _
    'FileFormat:=xlOpenXMLTemplate, _

请参阅Save a workbook or worksheet as a templateSave a workbook as a template