2010-01-08 56 views
5

Tôi không phải là chuyên gia Excel hoặc VBA nhưng tôi muốn chèn công thức excel hiện tại này vào ô sử dụng VBA. công thứcThêm công thức ô trong Excel qua vba

Current Excel:

=IF(OR(ISNUM(D570)=FALSE;ISNUM(D573)=FALSE);"";IF(C573="Total";D573-D570;"")) 

VBA công thức:

ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp).Offset(2, 12).Value = "=IF(OR(ISNUM(R[-3]C[-9])=FALSE;ISNUM(R[0]C[-9])=FALSE);'';IF(R[0]C[-10]='Total';R[0]C[-9]-R[-3]C[-9];''))" 

Nó không làm việc ... Ai đó có thể giúp tôi xin vui lòng?

Trả lời

8

Hãy thử sử dụng .formula = thay vì .value = trong mã VBA của bạn.

Đặt .value của ô chỉ cần sao chép ở bất kỳ giá trị nào bạn chỉ định. Trong trường hợp này, công thức của bạn được chuyển đổi đơn giản thành giá trị chuỗi.

Sử dụng thuộc tính .formula, bạn đang chỉ định công thức được sử dụng để tính giá trị, đó là những gì bạn đang tìm kiếm.

4

Tôi có thể đầu tiên cho thấy một đơn giản hóa công thức của bạn, từ:

=IF(OR(ISNUM(D570)=FALSE;ISNUM(D573)=FALSE);"";IF(C573="Total";D573-D570;"")) 

... để ...

=IF(AND(C573="Total"; ISNUM(D570); ISNUM(D573)); D573-D570; "") 

Sau đó, tôi muốn thiết lập một tế bào (các tế bào hoạt động trong ví dụ bên dưới) để sử dụng công thức đó bằng mã VBA:

ActiveCell.Formula = "=IF(...)" 
+1

Cũng thay đổi dấu chấm phẩy thành dấu phẩy. – Codezy

+0

Hoặc sử dụng FormulaLocal, nhưng tôi nghĩ rằng dấu chấm phẩy cho dấu phẩy ý tưởng là tốt hơn .. – Ant

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