Đinh Xuân Mạnh
Đinh Xuân Mạnh
Thảo luận 6 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 249 lượt xem

em E chút là làm thế nào viết đc ng thức "Thuộc" trong VBA ạ?vì dụ

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 đó?

Thảo luận 6 câu trả lời
Lượt xem 249 lượt xem
Vỗ tay vỗ tay
Đinh Xuân Mạnh 18:03 - Mar 05, 2021

Ý 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é.

Vỗ tay vỗ tay
Đinh Xuân Mạnh 08:03 - Mar 06, 2021

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 ạ?

Vỗ tay vỗ tay
Đinh Xuân Mạnh 09:03 - Mar 06, 2021

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)

Vỗ tay vỗ tay
Đinh Xuân Mạnh 18:04 - Apr 19, 2021

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 ạ.

Vỗ tay vỗ tay
Đinh Xuân Mạnh 09:04 - Apr 20, 2021

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

Vỗ tay vỗ tay
Đinh Xuân Mạnh 14:04 - Apr 22, 2021

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 ạ.

Vỗ tay vỗ tay
Câu hỏi liên quan
@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội