Chào thầy, e làm theo code này mà ko biết nó bị sai chổ nào mong thầy sửa giúp em.
Sub NHAN()
Dim i As Integer
For i = 9 To 13
If Sheet1.Range("E" & i).Value <> "" Then
Sheet1.Cells("F" & i).FormulaR1C1 = "=RC[-1]*RC[-4]"
End If
Next i
End Sub
Về cú pháp thì không sai.
Còn thực tế khi chạy code ra kết quả gì thì cần xem cụ thể trên file của bạn.
Chú ý câu lệnh này:
Sheet1.Cells("F" & i).FormulaR1C1 = "=RC[-1]*RC[-4]"
có nghĩa là gán công thức vào Sheet1, tại vị trí cột F dòng i (tương ứng theo cột E dòng i nếu có dữ liệu).
Bạn không nên để code này, mà nên dùng
Sheet1.Cells("F" & i).Value = ...
Tức là lấy 1 giá trị cụ thể, thay vì lấy dạng công thức.
(vì học đến phần này là bạn đã biết cách viết code để nhận giá trị vào 1 ô rồi, không cần dùng code do record macro nữa)
em cám ơn thầy, vì em muốn sử dụng phép tính nhân bằng vba cho ra kết quả luôn, chứ không muốn sử dụng công thức trong excel
Vì viết thuộc tính .formula cũng chính là gán 1 công thức vào 1 ô, như thế không đúng mục đích của bạn. Cách viết này đúng hơn:
Sheet1.Cells("F" & i).Value = Sheet1.Cells("B" & i).Value * Sheet1.Cells("E" & i).Value
Dạ đúng cái em cần, e cám ơn thầy
Bạn học kỹ chương 6 để biết cách viết code với đối tượng range, cell nhé. Nên học thuộc để có thể ứng biến trong nhiều tình huống khác nhau.
Dạ e sẽ ghi nhớ ạ