0

突然之间,Excel 365 开始在我的公式中添加一个 @,这是通过 VBA 分配的。文档说它不应该影响功能,但它确实给了我#VALUE!错误。当我手动删除它时,公式是正确的。文档还说,这来自使用表格时的结构化名称,但数据不在表格中。

我已经尝试了我能想到的一切来删除它,但没有任何效果。我已将 SENDKEYS 序列分配给 FixFormula() 并在我的 proc 中调用它,但它不起作用。如果我将 FixFormula() 分配给工作表上的按钮,它工作正常。

我的问题是:

  1. 我可以关闭 Excel 将 @ 添加到公式吗?或者
  2. 如何修复 SENDKEYS 调用以在我的代码中工作?

这是代码部分:

'lookup/get values from CW Download and copy to KPMG
CWLastRow = Sheets("CW Download").Cells(Sheets("CW Download").Rows.Count, "B").End(xlUp).Row

vLookupArray = "'CW Download'!$Z$2:$Z$" + CStr(CWLastRow)
vReturnArray = "'CW Download'!$A$2:$R$" + CStr(CWLastRow)
 
Range("AP2").Formula = "=XLOOKUP($Z2," + vLookupArray + "," + vReturnArray + ",""-"",0)"

'remove @ symbol from formula
Range("AO2").Formula = "=FORMULATEXT(AP2)"
If Mid(Range("AO2"), 2, 1) = "@" Then
    Sheets("KPMG").Activate
    Range("AP2").Activate
    Call FixFormula
End If
Range("AP2").AutoFill Destination:=Range("AP2:AP" + CStr(pLastRow)), Type:=xlFillDefault

Sub FixFormula()

    SendKeys "{F2}{UP 15}{HOME}{RIGHT}{DEL}{ENTER}"
    
End Sub

这是一个完整的自动化项目的片段,让我把头发拉出来。在这个“功能”本周早些时候开始出现之前,一切都很好。研究表明它是在 2019 版本中添加的,应该不会影响功能。

这是项目中另一个 proc 的片段,也分配了 XLOOPUP 公式,即使将公式放在该工作表上的 2 个数据透视表之间,也不会出现此问题。

pLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
Cells(4, 8).Value = "Match"
Cells(5, 8).Formula = "=XLOOKUP($J5,$A$5:$A$" + CStr(pLastRow) + ",$G$5:$G$" + CStr(pLastRow) + ",0,0)"
Cells(4, 9).Value = "Variance"
Cells(5, 9).Formula = "=$M5-$H5"

工作表“CW 下载”或“KPMG”上没有运行代码的表格。

非常感谢任何见解。

4

0 回答 0