2015-07-09 23 views
7

Tôi có mã này và câu hỏi của tôi là, nó có hoạt động trên phiên bản tiếng Anh của excel không? Tôi có nghĩa là công thức địa phương sẽ làm việc trên phiên bản tiếng Anh của excel? (ORAZ có nghĩa là VÀ trong ngôn ngữ của tôi).Khó khăn về ngôn ngữ Excel VBA

Khi tôi đặt ORAZ nó chỉ hoạt động trên PC của tôi, nhưng trên máy tính tiếng Anh thì không, khi tôi đặt VÀ nó không đưa ra lỗi nhưng nó không hoạt động, bất kỳ ý tưởng nào giúp tôi?

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

Kiểm tra phiên bản Excel sau đó thực thi mã khi thích hợp. Loại giống như thử nghiệm cho 64bit. – findwindow

+1

Trong trường hợp cụ thể này, thay đổi công thức thành '" = (H $ 7 <= $ G $ 7) * ((H $ 7 + 7)> $ G $ 7) "' và tránh các vấn đề ngôn ngữ hoàn toàn. – Jeeped

+2

Bạn cũng có thể muốn xem [Range.FormulaLocal property] (https://msdn.microsoft.com/en-us/library/office/ff838851.aspx) và sử dụng nó thay cho [.Formula thuộc tính] (https://msdn.microsoft.com/en-us/library/office/ff838835.aspx). Nếu bạn sử dụng '.Formula = ...' thì nó sẽ * luôn luôn * là 'AND', không phải' ORAZ'. – Jeeped

Trả lời

0

Tôi đã thử nghiệm trong tôi (Bồ Đào Nha) Excel 2013 và phát hiện ra rằng, trên thực tế, FormatConditions.Add() hy vọng công thức của nó trong cục bộ phiên bản. Nó không hiểu "công thức kinh điển" như Range.Formula.

Sau đây nên làm việc, mặc dù phương pháp sử dụng để dịch công thức không phải là thích hợp nhất bao giờ hết:

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 

Lưu ý rằng tôi cũng loại bỏ các vô dụng xlFormula lập luận của .Add() cuộc gọi, và explicited sự tên thông số tùy chọn.

Ngoài ra, sau khi thực tế tôi phát hiện ra rằng câu hỏi này trùng lặp với thisthis.

1

Vấn đề là bạn chỉ đang chèn văn bản trong một ô, vì vậy nó sẽ chỉ hoạt động nếu excel được thiết lập cho ngôn ngữ đó. Thay vào đó, bạn có thể gán hàm trang tính từ mã VBA như sau:

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

Bằng cách này Excel sẽ dịch công thức sang ngôn ngữ hiện tại mà người dùng đã thiết lập.

Các vấn đề liên quan