Nhờ giúp đỡ về code vba nhập liệu duy nhất trong vùng

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

minhtamdng

Thành viên mới
Tham gia
21/7/11
Bài viết
5
Được thích
0
Mình cần nhập dữ liệu vào Vùng dữ liệu A1:A20 của sheet 1, điều kiện là nhập dữ liệu vào ô duy nhất. Có nghĩa là trong vùng này, nhập dữ liệu vào ô này thì xóa tất cả các ô còn lại trong vùng này. Nhờ aec giúp đỡ. Xin cám ơn ! email minhtamdng@gmail.com
 
Cái ô duy nhất cần nhập liệu bạn định xác định nó bằng cách nào?
Xin đừng nói là 'bất kỳ' đó nha!
 
Upvote 0
Cái ô duy nhất cần nhập liệu bạn định xác định nó bằng cách nào?
Xin đừng nói là 'bất kỳ' đó nha!
Trong range A1:A20 thuộc sheet 1. Nhập liệu vào ô duy nhất nghĩa là Khi mình nhập dữ liệu vào bất kỳ 1 ô nào trong range này thì xóa dữ liệu trong các ô còn lại trong range này. Ví dụ: Nhập số 5 vào ô A3, thì xóa dữ liệu trong dãy A1:A20 trừ A3, Nhập dữ liệu vào A10 thì xóa dữ liệu trong dãy A1:A20 trừ A10. Ý mình là như vậy
 
Upvote 0
BẠn click chuột phải vào tên sheet/ view code, rồi dán cái này vào:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, val
Set rng = Range("A1:A10") ' Vung du lieu muon thay doi
If Intersect(Target, rng) Is Nothing Then Exit Sub
val = Target.Value ' luu gia tri thay doi
Application.EnableEvents = False ' tam thoi ngung xu ly event
rng.ClearContents ' xoa toan bo du lieu cu
Target.Value = val ' gan tro lai du lieu da xoa tai o target
Application.EnableEvents = True ' mo lai event
End Sub
 
Upvote 0
BẠn click chuột phải vào tên sheet/ view code, rồi dán cái này vào:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, val
Set rng = Range("A1:A10") ' Vung du lieu muon thay doi
If Intersect(Target, rng) Is Nothing Then Exit Sub
val = Target.Value ' luu gia tri thay doi
Application.EnableEvents = False ' tam thoi ngung xu ly event
rng.ClearContents ' xoa toan bo du lieu cu
Target.Value = val ' gan tro lai du lieu da xoa tai o target
Application.EnableEvents = True ' mo lai event
End Sub
Cám ơn bạn rất nhiều. Nhờ bạn giải thích thêm cho mình chỗ code này với
If Intersect(Target, rng) Is Nothing Then Exit Sub: Intersect này ý nghĩa là gì
Application.EnableEvents = False ' tam thoi ngung xu ly event: Vì sao lúc này tạm thời ngưng xử lý event
Application.EnableEvents = True ' mo lai event: Vì sao lúc này mở lại event
 
Upvote 0
If Intersect(Target, rng) Is Nothing Then Exit Sub: Intersect này ý nghĩa là gì
Target là ô mà bạn nhập liệu
rng là vùng mà bạn muốn thay đổi, giả sử là A1:A10
intersect chính là phần giao giữa vùng và target đó
VD: Bạn nhập liệu vào ô B1 thì intersect = nothing và thoát sub
Nếu nhập liệu vào ô A1 thì intersect là ô A1, và code thực hiện dòng kế tiếp
Application.EnableEvents = False ' tam thoi ngung xu ly event: Vì sao lúc này tạm thời ngưng xử lý event
Vì bạn yêu cầu delete giá trị cả vùng, nên phải có cái này.
Giả sử bạn nhập giá trị tại A1, và delete A2:A10
Khi delete A2:A10, lúc này vô tình lại kích hoạt Change event, và code sẽ báo lỗi vòng lặp vô tận
Do đó phải có bước tắt event này đi, để việc điền dữ liệu, xóa dữ liệu sẽ không kích hoạt Change event.
Application.EnableEvents = True ' mo lai event: Vì sao lúc này mở lại event
Sau khi điền dữ liệu xong xuôi thì mở lại thôi.
 
Upvote 0
Web KT

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

Back
Top Bottom