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

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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!

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

BẠn click chuột phải vào tên sheet/ view code, rồi dán cái này vào:

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

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.

www.giaiphapexcel.com/diendan/threads/nh%E1%BB%9D-gi%C3%BAp-%C4%91%E1%BB%A1-v%E1%BB%81-code-vba-nh%E1%BA%ADp-li%E1%BB%87u-duy-nh%E1%BA%A5t-trong-v%C3%B9ng.163602/#post-1091216

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm