【问题标题】:Is there a way to write a local language - independent formula within a format condition in VBA in excel?有没有办法在 Excel 中的 VBA 格式条件内编写与本地语言无关的公式?
【发布时间】:2021-09-17 09:00:09
【问题描述】:

我正在用 VBA 编写一个包含一个简单公式的 excel 宏:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=NOT(AND($L1>360;$K1<45))"

但是,这只有在 excel 中的语言设置为英语时才有效。如果申请人的语言是德语,它看起来像这样:

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=NICHT(UND($L1>360;$K1<45))"

有没有办法使用适用于所有申请人的通用方法?

关于解决方案的一些要求:

  • 它不应该是具体的(没有从英语到德语的翻译)
  • 同样,带有语言 ID 的 select case 语句也不适用
  • 函数翻译器有一个选项:由于管理员限制,这无法应用(我很好奇,如果有其他方法:))
  • 更改公式以在单元格中使用它也不适用,因为我需要那里的格式条件

感谢任何帮助

【问题讨论】:

  • 不太熟悉这个主题,我无法测试它,但可以在单元格的Formula 属性中插入英文公式,看看FormulaLocal 是否会给你翻译后的公式?

标签: excel vba regional-settings


【解决方案1】:

实际上这是不可能的,但有一个解决方法。

首先注意英文版使用,而不是;作为分隔符,所以你的英文公式需要是=NOT(AND($L1&gt;360,$K1&lt;45))

解决方法是将该公式写入任何未使用的单元格。

Range("unused_cell").Formula = "=NOT(AND($L1>360,$K1<45))"

然后阅读那个的本地化

Dim FormulaLocal As String
FormulaLocal = Range("unused_cell").FormulaLocal

并将其用作条件

Selection.FormatConditions.Add Type:=xlExpression, Formula1:=FormulaLocal

这会将条件转换为 Excel 的正确本地化。

【讨论】:

    【解决方案2】:

    条件格式的公式是特定于区域的,没有选项 - 无论是在 VBA 中还是在 GUI 中 - 都可以处理这个问题,除非你省略所有语言特定的关键字(或按照前面的答案建议进行“翻译”)

    这将起作用:

    =($K1<45)*($L1>360)=0
    

    【讨论】:

    • 谢谢。这适用于这个应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2018-03-08
    相关资源
    最近更新 更多