【问题标题】:Partial Formula Replacement部分公式替换
【发布时间】:2022-08-20 17:59:13
【问题描述】:

我正在尝试替换单元格中的部分公式。

我有一个 InputBox 来指定一个数字,以及一个替换函数来替换值。 (为了更好地衡量,我使范围包括带有公式的单元格和它周围的一些空白单元格。)

我的宏用新值填充空白单元格,但不替换 Excel 中所需的值。

我希望未更改的值是 XXXX,并允许用户输入他们自己的值,该值将与 Excel 文件对应以从中检索数据。

Sub Replace_XXXX_and_YYYY() 

SN1 = InputBox(\"Enter 1st Serial Number\") 

SN2 = InputBox(\"Enter 2nd Serial Number\") 

Range(\"B9:B11\").Replace What:=XXXX, Replacement:=SN1 

Range(\"B9:B11\").Replace What:=YYYY, Replacement:=SN2 

End Sub
  • XXXXYYYY 变量(或常量)是否已在某处声明?还是您只是错过了引号 (\"XXXX\") 来真正替换字符串 XXXX(并且也错过了使用 Option Explicit)?
  • XXXX 和 YYYY 是占位符,因此公式会将 XXXX 和 YYYY 转换为输入的序列号,并使公式找到相应的文档。
  • 不,我问的是您的 VBA 代码中的 XXXX 是什么?我建议您将声明 Option Explicit 放在代码的顶部并编译它。
  • 以下公式是我尝试使用 vba 代码更改的公式的一部分。我不能输入整个公式,因为我只能在这里输入这么多字符。 =IF(ROUND(MAX(\'[PN 4020-5 - SN XXXX.xlsx]Sheet1\'!$D$67,\'[PN 4020-5 - SN XXXX.xlsx]Sheet1\'!$D$78,\ '[PN 4020-5 - SN XXXX.xlsx]Sheet1\'!$D$89,\'[PN 4020-5 - SN XXXX.xlsx]Sheet1\'!$D$100,\'[PN 4020-5 - SN XXXX.xlsx]Sheet1\'!$D$111),4)>ROUND(MAX(\'[PN 4020-5 - SN YYYY.xlsx]Sheet1\'!$D$67,\'[PN 4020-5 - SN YYYY.xlsx]

标签: excel vba


【解决方案1】:

正如我在第一条评论中所写:您可能想用一些东西替换公式的"XXXX"

您需要在 "XXXX" 周围加上引号,以便 VBA(不是 Excel)知道您要处理字符串 - 否则它将查找名为 XXXX 的变量(或函数)。而且由于您可能没有定义(和分配)这样的变量并且您没有设置Option Explicit,VBA 将动态创建一个变量。所以What 将得到一个空字符串作为参数,而替换什么也不做。

Range("B9:B11").Replace What:="XXXX", Replacement:=SN1 

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-05
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    相关资源
    最近更新 更多