首页 > 解决方案 > VBA在公式中弄乱了我的结构化参考

问题描述

我是这个网站的新手,但几年来一直在使用 VBA。我有一个问题,该问题最近才开始,并且非常不一致,出现在我的带有 Office 365 的 PC 上,但没有出现在运行 MS Office Pro 2016 的笔记本电脑上。

我遇到的问题是,当将公式插入工作表时,它将结构化引用从列"DesktopObs[Class Title]"更改为单元格"DesktopObs[@[Class Title]]"

我在专栏中得到了这个: =MAX(IF(DesktopObs[@[Class Title]]=[@[Class Title]],IF(DesktopObs[@[Observation Type]]<>"Re-Obs",DesktopObs[Actual Observation date])))

虽然我应该得到这个: =MAX(IF(DesktopObs[Class Title]=[@[Class Title]],IF(DesktopObs[Observation Type]<>"Re-Obs",DesktopObs[Actual Observation date])))

下面是我用于“恢复公式”的(部分)代码。

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Class Setup")
Set rng = ws.Range("tbl_ClassSetup[Latest Desktop Observation]")


Call f_WorksheetProtection(ws, False)

strFormula(1) = "=MAX(IF(DesktopObs[Class Title DO]=[@[Class Title]],IF(DesktopObs[Observation Type]<>""Re-Obs"",DesktopObs[Actual Observation date])))"
strFormula(2) = "=MAX(IF(DesktopObs[Class Title]=[@[Class Title]],IF(DesktopObs[Observation Type]=""Re-Obs"",DesktopObs[Actual Observation date])))"


For i = 1 To 2
  rng.Offset(0, i - 1).Formula = strFormula(i)
  rng.Offset(0, i - 1).FormulaArray = rng.Offset(0, i - 1).Formula
Next i

我怀疑它与 Office 365(可能是自动更正)有关,但无法确定它到底是什么。我什至从头开始尝试并重新安装了 Windows 和整个办公室,但这个问题仍然存在。

标签: excelvba

解决方案


推荐阅读