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 

问题是你只是在一个单元格中插入一个文本,所以只有在为该语言设置了excel的情况下才能工作。 相反,您可以像这样从VBA代码分配工作表函数:

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

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

我在我的(巴西葡萄牙语)Excel 2013中进行了testing,结果发现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参数,并解释了可选的参数名称。

此外,事后我发现这个问题是这个和这个重复。