Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excelvba语言困难_Vba_Excel - Fatal编程技术网

excelvba语言困难

excelvba语言困难,vba,excel,Vba,Excel,我有这个代码,我的问题是,它能在英文版的excel上工作吗?我的意思是,本地公式可以在英文版的excel上使用吗?(ORAZ的意思是用我的语言) 当我使用ORAZ时,它只在我的电脑上工作,但在英文电脑上不工作,当我使用ORAZ时,它不会给出错误,但它不工作,有什么办法可以帮助我吗 With Range("$H$6:$FH$50").FormatConditions _ .Add(xlExpression, xlFormula, "=ORAZ(H$7<=$G$7,(H$7+7)>$G

我有这个代码,我的问题是,它能在英文版的excel上工作吗?我的意思是,本地公式可以在英文版的excel上使用吗?(ORAZ的意思是用我的语言)

当我使用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
范围(“$H$6:$FH$50”)。格式条件_
.Add(xlExpression,xlFormula,“=ORAZ(H$7$G$7)”)
带.内饰
.PatternColorIndex=xlAutomatic
.ThemeColor=xlThemeColor灯2
.TintAndShade=0.799981688894314
以
以
我用我的(巴西葡萄牙语)Excel 2013进行了测试,结果发现,
FormatConditions.Add()
确实希望其公式是本地化版本的。它不理解像
Range这样的“规范公式”。公式理解

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

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
Dim temp As Range
“临时单元格仅用于翻译我们的公式。
'将其设置为工作表永远不会使用的单元格。
设置温度=活动板材范围(“Z1000”)
temp.Formula=“=和(E$1$E$2)”在此处使用英语公式
范围(“$A$1:$D$4”)。格式条件_
.Add(类型:=xlExpression,公式1:=temp.FormulaLocal)
带.内饰
.PatternColorIndex=xlAutomatic
.ThemeColor=xlThemeColor灯2
.TintAndShade=0.799981688894314
以
以
呼叫临时清除“清除临时单元格”
注意,我还删除了
.Add()
调用中无用的
xlFormula
参数,并明确了可选参数名称


另外,在我发现这个问题与和重复之后。

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

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

通过这种方式,Excel将公式转换为用户设置的当前语言。

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