【问题标题】:Excel VBA language difficultiesExcel VBA 语言困难
【发布时间】:2015-07-09 22:04:19
【问题描述】:

我有这段代码,我的问题是,它适用于英文版的 excel 吗?我的意思是本地公式将适用于英文版的 excel? (ORAZ 在我的语言中是 AND 的意思)。

当我输入 ORAZ 时,它只能在我的 PC 上工作,但在英文 PC 上却不行,当我输入 AND 时它没有给出错误但它不起作用,有什么想法可以帮助我吗?

With Range("$H$6:$FH$50").FormatConditions _
 .Add(xlExpression, xlFormula, "=ORAZ(H$7<=$G$7,(H$7+7)>$G$7)")
With .Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorLight2
    .TintAndShade = 0.799981688894314
End With
End With

【问题讨论】:

  • 测试 Excel 版本,然后根据需要执行代码。有点像测试 64 位。
  • 在这种特殊情况下,将公式更改为 "=(H$7&lt;=$G$7)*((H$7+7)&gt;$G$7)" 并完全避免语言问题。
  • 您可能还想看看Range.FormulaLocal property 并用它来代替.Formula property。如果您使用.Formula = ...,那么它将始终AND,而不是ORAZ
  • 我明白了,但如果我使用并且应用程序无法正常工作
  • 我在 10 多个不同的国家工作过,在 Excel 中使用了 10 多种不同的语言。英语总是在 VBA 中工作。我非常怀疑你关于AND 不起作用的说法。例如,如果您要求 VBA 在单元格公式中输入=SUM(A1:B2),它实际上会自动转换为您安装的语言的公式公式(在工作表上)。如果您想知道英文公式,那么只需询问Debug.Print Selection.Formula,它将始终向您显示英文公式。

标签: vba excel


【解决方案1】:

我在我的(巴西葡萄牙语)Excel 2013 中进行了测试,发现FormatConditions.Add() 确实需要本地化版本 中的公式。它不像Range.Formula 那样理解“规范公式”。

即使用于翻译公式的方法不是最合适的,以下也应该有效:

Dim temp As Range

' The temp cell is just for translating our formula.
' Set it to some cell your sheet will never use.
Set temp = ActiveSheet.Range("Z1000")
temp.Formula = "=AND(E$1<=$E$2,(E$1+2)>$E$2)" ' use English formula here

With Range("$A$1:$D$4").FormatConditions _
    .Add(Type:=xlExpression, Formula1:=temp.FormulaLocal)

    With .Interior
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.799981688894314
    End With
End With

Call temp.Clear ' do away with the temp cell

请注意,我还删除了 .Add() 调用的无用 xlFormula 参数,并明确了可选参数名称。

另外,事后我发现这个问题与thisthis 重复。

【讨论】:

    【解决方案2】:

    问题是您只是在单元格中插入文本,因此只有在为该语言设置了 excel 时它才会起作用。相反,您可以像这样从 VBA 代码中分配工作表函数:

    ActiveCell = WorksheetFunction.And(H$7<=$G$7,(H$7+7)>$G$7)
    

    这样,Excel 会将公式翻译成用户设置的当前语言。

    【讨论】:

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