使用.formula时应用程序定义或对象定义的错误

时间:2018-07-06 14:06:06

标签: excel

我一直在努力将公式键入到工作表的单元格中。这是我的活动表(肯定)。

源是具有完整路径的文件。工作表名称是...,而lta_col_letter是我在其中输入公式的列字母。

ActiveSheet.Range(lta_col_letter & 2).Formula = "=IFERROR(INDEX('[" & Source & "]...'!$G:$G,MATCH(" & versionref_col_letter & "2,'[" & Source & "]...'!$B:$B,0))," & Chr(34) & Chr(34) & ")"

我不确定为什么会出现此错误。请帮忙!

编辑: 当我添加缺少的[括号时有效,但是当它进入单元格时,它将在工作表名称之后和单元格引用之前再次添加文件名。在msgbox中看起来不错。

1 个答案:

答案 0 :(得分:0)

好像您在 source 周围缺少一些方括号。

 ActiveSheet.Range(lta_col_letter & 2).Formula = "=IFERROR(INDEX('[" & source & "]...'!$G:$G,MATCH(" & versionref_col_letter & "2,'[" & source & "]...'!$B:$B,0)), text(,))"

要检查这些类型的错误,请将'放在开头的=之前,然后运行将公式作为字符串放入单元格的过程。转到工作表并进行外观检查,然后尝试删除'。进行更正,直到有了一个有效的公式,然后将更正转移到VBA公式字符串中。

由于您似乎已使用打开的工作簿将工作簿名称检索到 source 中,因此可以考虑将Range.Address Property与External:= True一起使用,以检索完全标点的外部地址

dim sourceG as string, sourceB as string

sourceG = workbooks(source).worksheets("...").range("G:G").address(external:=true)
sourceB = workbooks(source).worksheets("...").range("B:B").address(external:=true)

ActiveSheet.Range(lta_col_letter & 2).Formula = _
  "=IFERROR(INDEX(" & sourceG & ", MATCH(" & versionref_col_letter & "2, " & sourceB 
 & ",0)), text(,))"