VBA宏:编译期望语句结束的错误

问题描述 投票:1回答:1

我正在尝试使用基于唯一案例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"")"

我按下回车键后立即收到编译错误

excel vba excel-vba
1个回答
2
投票

使用.Address with external:= true将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"")"
© www.soinside.com 2019 - 2024. All rights reserved.