我有这个代码,我的问题是,它是否适用于英文版的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
答案 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()
参数,并解释了可选参数名称。