em chào Thầy. E hỏi chút là làm thế nào viết đc công thức "Thuộc" trong VBA ạ?
vì dụ muốn viết điều kiện là ô được trọng thuộc 1 vùng nào đó?
Ý bạn là muốn kiểm tra xem ô được chọn có nằm trong 1 vùng được chỉ định trước không?
Cú pháp như sau nhé:
Ví dụ: Vùng được chỉ định là C2:C3 trong Sheet1
IF Not Intersect(Sheet1.Range("C2:C3"), ActiveCell) Is Nothing Then
'Nội dung câu lệnh nếu thỏa mãn
End If
Nếu viết trong sự kiện (như trong hướng dẫn chương 13) thì bạn thay ActiveCell bằng Target nhé.
thư thầy, nếu viết theo sự kiện như hướng dẫn thì target phải đặt trước vùng chỉ định chứ nhỉ. e chưa hiểu lắm. sao trường hợp này lại để sau ạ?
trong Intersect thì bạn viết đối tượng nào trước cũng được, không quy định. Nội dung này được hiểu là có sự giao thoa với nhau (tức là ô bạn đang kích hoạt chính là vị trí Range được chỉ định)
thưa thầy. ý của em là: nếu ô D5 có giá trị thuộc trong danh sách A,B,C.... thì ko thêm, nếu không thuộc danh sách thì sẽ thêm vào cột B đấy ạ.
Bạn cần xác định rõ quy trình ở đây sẽ hoạt động như thế nào, khi đó mới viết code chính xác được.
Theo mình thấy:
1. Xác định giá trị ô D5 có trong cột B không bằng cách nào?
Ví dụ: dùng hàm countif để đếm. Vùng đếm là từ B5 tới dòng cuối cột B
Bạn có thể viết hàm trong VBA bằng Application.WorksheetFunction.COUNTIF(..., ...)
kết quả COUNTIF = 0 tức là chưa có trong danh sách.
2. Khi COUNTIF = 0 thì bạn nạp giá trị đó vào danh sách => thực hiện thế nào?
cần có 1 nút bấm để bấm xác nhận trường hợp này (khi nào bấm nút thì add thêm vào) hay là luôn luôn tự động?
Mình nghĩ bấm nút thì sẽ tốt hơn.
Add vào thì add tại vị trí dòng cuối cột B + 1
lệnh add:
Range("B" & lr + 1).Value = Range("D5").value
dạ. E cảm ơn thầy. e cũng đang làm như vậy. chỉ là ko biết có cách nào nhanh hơn ko thôi ạ.