Làm sao biết khi nào chọn vùng từ dưới lên và khi nào chọn vùng từ trên xuống (1 người xem)

Liên hệ QC

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

vba_gpe

Thành viên thường trực
Tham gia
15/12/10
Bài viết
296
Được thích
44
Nghề nghiệp
Thất nghiệp
Chào anh chị trong diễn đàn.
Em có một thắc mắc, có cách nào dùng VBA có thể biết được khi nào người dùng đang chọn một vùng theo kiểu bôi chọn chuột từ dưới lên trên hay bôi chọn chuột từ trên xuống dưới không ạ.

Trong thuộc tính của Range em chưa thấy cái nào khả nghi về vấn đề này cả. :)

Em cảm ơn mọi người.
 
Chào anh chị trong diễn đàn.
Em có một thắc mắc, có cách nào dùng VBA có thể biết được khi nào người dùng đang chọn một vùng theo kiểu bôi chọn chuột từ dưới lên trên hay bôi chọn chuột từ trên xuống dưới không ạ.

Trong thuộc tính của Range em chưa thấy cái nào khả nghi về vấn đề này cả. :)

Em cảm ơn mọi người.
Chọn xuống dùng .End(xlDown)
Chọn lên dùng .End(xlUp)
 
Upvote 0
Chào anh chị trong diễn đàn.
Em có một thắc mắc, có cách nào dùng VBA có thể biết được khi nào người dùng đang chọn một vùng theo kiểu bôi chọn chuột từ dưới lên trên hay bôi chọn chuột từ trên xuống dưới không ạ.

Trong thuộc tính của Range em chưa thấy cái nào khả nghi về vấn đề này cả. :)

Em cảm ơn mọi người.
Bạn tìm hiểu về thuộc tính End tại đây
http://www.giaiphapexcel.com/diendan/threads/116078.Thuộc-tính-End()-trong-Excel-giới-thiệu-tổng-quan-(P1)
 
Upvote 0
Nếu trong vùng dữ liệu (DL) đã được người dùng chon mà không có những ô rỗng (không chứa DL) thì 2 cách chọn vùng như bạn nêu sẽ có số ô được chọn là như nhau (trong 1 cột DL)
Còn bằng ngược lại thì xài fương thức (FT) End(xlUp) ta sẽ có số lượng ô được chọn sẽ nhiều hơn FT End(xlDown)
 
Upvote 0
Xin các SMOD/MOD xóa giúp bài trùng
 
Upvote 0
Muốn chọn 1 vùng thì đầu tiên phải click 1 ô, sau đó mới kéo chuột cả vùng.
Như vậy thì dùng bắt sự kiện selection. So sánh cái select trước với cái sau.
Sau đó tính qua các trường hợp chọn bằng phím nóng.
 
Upvote 0
Muốn chọn 1 vùng thì đầu tiên phải click 1 ô, sau đó mới kéo chuột cả vùng.
Như vậy thì dùng bắt sự kiện selection. So sánh cái select trước với cái sau.
Sau đó tính qua các trường hợp chọn bằng phím nóng.
Khi chưa thả chuột thì chưa có sự kiện selection đâu anh.
Có thể dựa vào vị trí ActiveCell để biết hướng kéo chuột. Nhưng mà không biết chủ topic muốn làm cái gì.
 
Upvote 0
Khi chưa thả chuột thì chưa có sự kiện selection đâu anh.
Có thể dựa vào vị trí ActiveCell để biết hướng kéo chuột. Nhưng mà không biết chủ topic muốn làm cái gì.
Dạ ý của em là thế này:
- Mình không quan tâm người sử dụng đang chọn vùng theo kiểu từ trên xuống dưới hay là từ dưới lên trên.
- Thay vì phải dùng For để duyệt qua từng cell trong vùng chọn, thì ngay từ ban đầu em có thể xác định được kiểu chọn của họ là kiểu nào không?
Chẳng hạn mình cứ quy định:
+ Nếu chọn từ trên xuống => Selection.row là ô có dòng nhỏ nhất. (kiểu 1)
+ Nếu chọn từ dưới lên => Selection.row là ô lớn nhất. (Kiểu 2)

Chỉ cần họ bôi chọn vùng, ngay từ ban đầu, mình có xác định được ngay là họ đang chọn kiểu 1 hay kiểu 2 hay không?
 
Upvote 0
Dạ ý của em là thế này:
- Mình không quan tâm người sử dụng đang chọn vùng theo kiểu từ trên xuống dưới hay là từ dưới lên trên.
- Thay vì phải dùng For để duyệt qua từng cell trong vùng chọn, thì ngay từ ban đầu em có thể xác định được kiểu chọn của họ là kiểu nào không?
Chẳng hạn mình cứ quy định:
+ Nếu chọn từ trên xuống => Selection.row là ô có dòng nhỏ nhất. (kiểu 1)
+ Nếu chọn từ dưới lên => Selection.row là ô lớn nhất. (Kiểu 2)

Chỉ cần họ bôi chọn vùng, ngay từ ban đầu, mình có xác định được ngay là họ đang chọn kiểu 1 hay kiểu 2 hay không?
Có lẽ bạn đang tìm hiểu 2 dạng ví dụ dưới đây:
PHP:
    With Sheet1
        sArr = .Range("B2", .Range("B65000").End(3)).Resize(, 5).Value
    End With


PHP:
    With Sheet1
        sArr = .Range("B2", .Range("B2").End(4)).Resize(, 5).Value
    End With
 
Upvote 0
Có lẽ bạn đang tìm hiểu 2 dạng ví dụ dưới đây:
PHP:
    With Sheet1
        sArr = .Range("B2", .Range("B65000").End(3)).Resize(, 5).Value
    End With


PHP:
    With Sheet1
        sArr = .Range("B2", .Range("B2").End(4)).Resize(, 5).Value
    End With
Em cảm ơn mọi người đã hỗ trợ. Em cũng đã tìm ra giải pháp của mình ạ. :)
 
Upvote 0
Web KT

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

Back
Top Bottom