【问题标题】:Excel VBA Replace is not working with formulasExcel VBA 替换不适用于公式
【发布时间】:2020-12-13 06:56:48
【问题描述】:

我尝试替换字符串形式的值以创建公式:

单元格:

"XY=(TRIM(CONCATENATE(AH11, AH12)))"

现在我在 VBA 中使用了一个经典的替换函数:

Cells.Replace What:="XY", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

当用宏记录器记录它时,它可以工作并且公式会出现,但如果用宏再次运行它就不起作用。

有人知道为什么吗?

这背后的全部原因是我创建了一个“公式创建器”,它应该基于下拉菜单创建一个公式,这是下拉连接的输出。

谢谢!

【问题讨论】:

  • 发生了什么或没有发生什么?您正在隐式处理ActiveSheet - 在Cells 之前指定工作簿/工作表会很好。
  • 因此您可以通过在“=”之前只使用一张纸和一个带有字符串的公式来复制它。现在录制一个 Marco 来替换它。它可以工作,但是当再次尝试应用宏时它不起作用。
  • 有趣的是,我可以用任何其他值替换它。所以用 XY 换 YX 是可行的,但不是 XY 什么都没有。

标签: excel vba replace excel-formula


【解决方案1】:

乍一看还可以,问题不是很明显。

有几件事可以尝试:

  1. MatchByte - 检查该参数 - 保存的参数不太可能是原因。
  2. 尝试删除最后一个参数 FormulaVersion:=xlReplaceFormula2 看看会发生什么
  3. 检查“单元格”是否指的是您的用例中的范围对象(即,当到达 VBA 代码的这一行时,您或您的代码将导航到包含您的单元格的预期工作表)。
  4. 确认子字符串“XY”确实是显示的单元格值的一部分,而不是其格式。您可以通过获取例如在 VBA 中执行此操作。 Range($A$1).value2(其中 "$A$1" 是您的单元格的引用)。或者您可以在 excel 中执行此操作,在另一个单元格中将其公式设置为“=$A$1”,然后将其格式化为一般格式。

根据您的问题,我不认为其中任何一个会成为问题,但在此处发布以防它有助于解决问题。

【讨论】:

    【解决方案2】:

    我遇到了以下问题: 我在我的电脑上记录了一个查找/替换,它给出了一个带有“FormulaVersion:=xlReplaceFormula2”的命令。我将它嵌入到我的宏中并且效果很好。我在另一台计算机上安装了我的宏,查找/替换命令导致宏每次都在该计算机上中止,即使它在我的计算机上运行良好。
    在第二台计算机上,我记录了一个查找/替换,发现它记录时没有“FormulaVersion:=xlReplaceFormula2”片段。所以,我把它从我的宏中删除了。两台电脑现在都可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多