gpt4 book ai didi

vba - 有没有办法执行单元格中包含的 VBA 代码?

转载 作者:行者123 更新时间:2023-12-04 21:40:08 25 4
gpt4 key购买 nike

我正在 Excel 中构建一个宏来针对一组数据运行规则并输出每一行是否通过规则。我希望能够在不更改宏的情况下添加、删除或更改规则。因此,我有一个 DATA 工作表和一个 RULES 工作表,宏生成 OUTPUT 工作表,然后填充它。

设置规则,以便在不同的行上枚举每个不同的规则。为此,我需要能够在 RULES 中输入与规则相关的实际 VBA 代码,然后我需要让宏查看 RULES 上的该列并执行单元格中的代码。

我的设置的简化示例-

  • DATA 有:ID、Dividend1、Dividend2、Divisor。 DATA 上有 n 行。
  • DATA 上的一行示例可能是 ID="123"、Dividend1=5、Dividend2=7、Divisor=35。
  • 规则有:名称、公式、阈值。为简单起见,只有 .
  • 让我们将其设置为 Name="Example", Formula=[见下文], Threshold="0.15"(阈值用于宏中的条件格式,在本例中未使用。)

  • 我将使用公式的伪代码只是为了消除到目前为止解释我的宏的一些不相关细节的需要。 RULES.Formula 应包含一行 VBA 代码,该代码执行-
    If CurrentDATARow.Dividend1 = Empty Then
    CurrentDATARow.Dividend2 / CurrentDATARow.Divisor
    Else
    CurrentDATARow.Dividend1 / CurrentDATARow.Divisor
    End If

    所以,所有这些解释只是为了给这个问题提供背景: 我可以在宏的 VBA 中做些什么来使其读取 RULES.Formula 的内容并使其与宏的其余部分内联执行该代码?

    最佳答案

    如果你有(说)

    IF({dividend1}="",{dividend2}/{divisor},{dividend1}/{divisor}) 

    存储在“规则”单元格中(注意不要包含“=”),您可以使用 Replace()用您正在检查的行中每个单元格的相关单元格地址替换占位符。

    然后使用类似的东西
    Dim val

    val=Sheet1.Evaluate(yourformulastring) 'evaluate vs. specific worksheet

    If Not IsError(val) Then
    'check against thresholds etc
    End If

    如果评估导致错误,您可以使用 IsError(val) 进行测试,如图所示,否则它将返回公式的结果,您可以针对“阈值”值单元格进行测试。如果您在阈值单元格上设置背景颜色,则可以根据超出的阈值为每一行着色。

    注意 没有工作表限定符, Evaluate将根据 ActiveSheet 计算公式,因此如果您不使用限定符,请确保在运行时正确的工作表处于事件状态。

    关于vba - 有没有办法执行单元格中包含的 VBA 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717379/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com