Excel VBA语言困难

时间:2015-07-09 22:04:19

标签: excel vba excel-vba

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

当我把ORAZ它只能在我的电脑上工作,但在英语电脑上却没有,当我把它放在它并没有给出错误但它不起作用时,任何想法如何帮助我?

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

2 个答案:

答案 0 :(得分:1)

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

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

这样,Excel会将公式转换为用户设置的当前语言。

答案 1 :(得分:0)

我在我的(巴西葡萄牙语)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

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

此外,事实上我发现此问题与thisthis重复。