VBA 宏 : Compile error expecting end of statement

标签 vba excel

我正在尝试使用基于唯一案例 ID 的索引匹配将数据从源工作簿复制到目标工作簿。

thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).value = "=IFERROR(Index(src.Worksheets("Sheet1").range("B:B"), MATCH(ThisWorkbook.Worksheets("Check").range("A2").value, src.Worksheets("Sheet1").range("A:A")), 0), 0), ""Closed"")"

我一按回车键就得到一个编译错误

最佳答案

使用带有 external:=true 的 .Address 将 VBA 工作簿/工作表/范围引用转换为工作表公式引用。

thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).FORMULA = _
  "=IFERROR(INDEX(" & src.Worksheets("Sheet1").range("B:B").Address(external:=true) & ", MATCH(" & ThisWorkbook.Worksheets("Check").range("A2").Address(0, 0, external:=true) & ", " & src.Worksheets("Sheet1").range("A:A").Address(external:=true) & ", 0)), ""Closed"")"

如果将各种地址分配给变量,它可能会更清晰。
dim addr1 as string, addr2 as string, addr3 as string

addr1 = src.Worksheets("Sheet1").range("B:B").Address(external:=true)
addr2 = ThisWorkbook.Worksheets("Check").range("A2").Address(0, 0, external:=true)
addr3 = src.Worksheets("Sheet1").range("A:A").Address(external:=true)

thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).FORMULA = _
  "=IFERROR(INDEX(" & addr1 & ", MATCH(" & addr2 & ", " & addr3 & ", 0)), ""Closed"")"

关于VBA 宏 : Compile error expecting end of statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52213989/

相关文章:

excel - 如何将多维excel表格转换为一维?

excel - VBA 新手 : Compile Error Invalid Qualifier.

excel - 错误处理后如何恢复循环?

java - 循环类成员并写入 Excel Apache POI

python - 我的 sum 函数没有对某些列的值求和

excel - 多个条件的 SUM(if) 函数 + 动态的日期/时间

arrays - 在 VBA Excel 中重新调整数组的大小

c++ - 使用 OLE 以编程方式保存 Excel 文件

excel - 索引匹配;带有数字和文本的数组;查找大于和小于的值

vba - 使用 VBA 将选项卡添加到 Excel 中的多页用户窗体