2015-07-09 14 views
7

Mam ten kod i moje pytanie brzmi, czy będzie działać na angielskiej wersji programu Excel? Mam na myśli lokalne formuły będą działać na angielskiej wersji programu Excel? (ORAZ mean AND w moim języku).Excel VBA trudności językowe

Kiedy umieszczam ORAZ działa tylko na moim komputerze, ale na angielskim PC nie ma, kiedy umieszczam I nie daje błędu, ale to nie działa, wszelkie pomysły, jak mi pomóc?

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 
+1

Sprawdź wersję programu Excel, a następnie wykonaj odpowiedni kod. Coś w rodzaju testowania na 64bit. – findwindow

+1

W tym konkretnym przypadku zmień formułę na '" = (H $ 7 <= $ G $ 7) * ((H $ 7 + 7)> $ G $ 7) "' i unikaj problemów związanych z językiem. – Jeeped

+2

Możesz również chcieć rzucić okiem na właściwość [Range.FormulaLocal] (https://msdn.microsoft.com/en-us/library/office/ff838851.aspx) i użyć jej zamiast [.ormula właściwość] (https://msdn.microsoft.com/en-us/library/office/ff838835.aspx). Jeśli użyjesz '.Formula = ...", to * zawsze * będzie "ORAZ", a nie "ORAZ". – Jeeped

Odpowiedz

0

testowałem w moim portugalskim (brazylijskim) Excel 2013 i okazało się, że rzeczywiście FormatConditions.Add() oczekuje od swoich formuł w zlokalizowaną wersję. Nie rozumie "formuł kanonicznych" takich jak Range.Formula.

Poniższa powinny działać, mimo że metoda stosowana do przetłumaczenia formuły nie jest najbardziej właściwa kiedykolwiek:

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 

Zauważ, że ja również usunąć niepotrzebne xlFormula argument wywołania .Add() i explicited opcjonalne nazwy parametrów.

Również po tym, jak odkryłem, że to pytanie jest duplikatem this i this.

1

Problem polega na tym, że wstawiasz tekst w komórce, więc działa on tylko wtedy, gdy program Excel jest skonfigurowany dla tego języka. Zamiast tego można przypisać funkcję arkusza z kodu VBA tak:

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

ten sposób Excel przełoży wzór do języka potocznego użytkownik utworzony.