Nhờ viêt giúp VBA tạo cột phụ chứa giá trị của công thức (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

longlt08

Thành viên thường trực
Tham gia
23/3/08
Bài viết
321
Được thích
400
Xin chào ACE trên diễn đàn !
Nhờ mọi người viết giúp đoạn code VBA để khi rời khỏi sheet, excel tự động kiểm tra giá trị trong cột, nếu giá trị trong cột là trống (blank) thò điền giá trị 0 vào cột phụ. Nếu ô của cột đó có giá trị >0 thì điền giá trị đó vào cột phụ. Xin chân thành cảm ơn !
có file gửi kèm theo
 

File đính kèm

Xin cảm ơn quanghai !
Mình kiểm tra lại cú pháp của câu lệnh VBA là đúng nhưng không hiểu sao khi thực thi trong file dữ liệu của mình thì "có vấn đề". Cũng y chang như vậy nhưng lại không có kết quả. Mình đang phải kiểm tra lại tổng thể. Xin chào bạn !
Thực ra thì vấn đề là ở chỗ khác chứ không phải ở các câu lệnh trên. Bởi vì các câu lệnh trên đều đúng cú pháp. Thậm chí câu lệnh .Clear đặt vào đây còn chẳng có ý nghĩa gì nữa (như bài trên mình đã giải thích). Còn "chỗ khác" là chỗ nào thì có lẽ bác ndu96081631 có câu trả lời: "Ai biết cái gì trong trái ổi?!"
 
Upvote 0
Mình đã phát hiện ra "lỗi" của VBA, thực ra vấn đề là khi ở bảng dữ liệu gốc nếu còn dùng filter thì không chỉ câu lệnh (.clear) mà cả đoạn VBA
With Range("D3:D" & [B65536].End(xlUp).Row)
.clear
.FormulaR1C1 = "=RC[-1]"
.Value = .Value
End With
cũng không cho kết quả đúng. Khi vào file nhiều dữ liệu do thường kiểm tra dữ liệu nên dễ bị mắc lỗi này. Tôi nghĩ để tránh lỗi này nên dùng câu lệnh : bỏ filter dữ liệu rồi mới cộng dữ liệu vào cột phụ. Nhờ mọi người giúp đỡ thêm cho hoàn thiện. Xin cảm ơn !
 
Upvote 0
Anh thêm vào đầu code 1 câu:


Mã:
Private Sub Worksheet_Deactivate()
Me.AutofilterMode = False
...
Lỗi xảy ra vì dùng End(xlup) trong khi filter sẽ cho dòng cuối đã filter chứ không phải dòng cuối chứa dữ liệu
 
Upvote 0
Mình đã phát hiện ra "lỗi" của VBA, thực ra vấn đề là khi ở bảng dữ liệu gốc nếu còn dùng filter thì không chỉ câu lệnh (.clear) mà cả đoạn VBA
With Range("D3:D" & [B65536].End(xlUp).Row)
.clear
.FormulaR1C1 = "=RC[-1]"
.Value = .Value
End With
cũng không cho kết quả đúng. Khi vào file nhiều dữ liệu do thường kiểm tra dữ liệu nên dễ bị mắc lỗi này. Tôi nghĩ để tránh lỗi này nên dùng câu lệnh : bỏ filter dữ liệu rồi mới cộng dữ liệu vào cột phụ. Nhờ mọi người giúp đỡ thêm cho hoàn thiện. Xin cảm ơn !
Hay là thêm cái này vào
AutoFilterMode = False
With Range("D3:D" & [B65536].End(xlUp).Row)
.Clear
.FormulaR1C1 = "=RC[-1]"
.Value = .Value
End With
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom