Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 运行时错误1004将索引公式放入单元格_Excel_Vba - Fatal编程技术网

Excel 运行时错误1004将索引公式放入单元格

Excel 运行时错误1004将索引公式放入单元格,excel,vba,Excel,Vba,我在excel模板中有一个动态验证列表,默认情况下显示运行excel文件的“用户”(使用公式=INDEX(user;1),用户是一个名称范围,首先显示当前“用户” 模板填写完毕后,工作表将复制到新文件中,并通过电子邮件发送新文件 因为新文件打开时“用户”会发生变化,所以我需要在复制工作表之前将验证中的值粘贴到模板中 我的想法是,模板可以被清除,以便重新使用,以便宏将公式重新输入到单元格中。我曾尝试使用工作表(“模板”).Range(“D3”).Formula=“=INDEX(user;1)”,但

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

模板填写完毕后,工作表将复制到新文件中,并通过电子邮件发送新文件

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

我的想法是,模板可以被清除,以便重新使用,以便宏将公式重新输入到单元格中。我曾尝试使用
工作表(“模板”).Range(“D3”).Formula=“=INDEX(user;1)”
,但我得到了
运行时错误1004应用程序定义的错误或对象定义的错误

请提供建议。我提出了更广泛的想法,以便为我试图实现的目标提供替代解决方案。

我建议使用适当的
文件格式
值将您的“excel模板”工作簿保存为真正的excel模板(
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, _
当用户双击工作簿模板时,将打开原始模板工作簿的副本,保留原始模板不变,因此无需重置公式以重复使用

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

Workbooks.Open Filename:="Workbook_FullName.xltm", Editable:=True

请参见,

更改为
。VBa非常以美国英语为中心。当VBa将公式放入工作表中时,excel将更改您的本地设置。