tailieunhanh - Chiêu 42: Giảm danh sách xổ xuống của Validation, sau khi chọn 1

Chiêu 42: Giảm danh sách xổ xuống của Validation, sau khi chọn 1. Rất hữu ích cho người dùng Excel khi bạn cho họ 1 danh sách để chọn bằng Validation, nhưng cái danh sách này tự động ngắn lại mỗi khi họ chọn 1 mục trong danh sách, để khỏi phải lựa chọn trong 1 danh sách quá dài, đồng thời tránh việc nhập trùng dữ liệu (đôi khi cần thiết). Bước 1: Trong 1 sheet bất kỳ (thí dụ sheet1) bạn có 1 danh sách trong vùng A1:A10. Bạn hy đặt name cho danh sách này bằng cách. | Chiêu 42 Giảm danh sách xổ xuống của Validation sau khi chọn 1. Rất hữu ích cho người dùng Excel khi bạn cho họ 1 danh sách để chọn bằng Validation nhưng cái danh sách này tự động ngắn lại mỗi khi họ chọn 1 mục trong danh sách để khỏi phải lựa chọn trong 1 danh sách quá dài đồng thời tránh việc nhập trùng dữ liệu đôi khi cần thiết . Bước 1 Trong 1 sheet bất kỳ thí dụ sheetl bạn có 1 danh sách trong vùng A1 A10. Bạn hy đặt name cho danh sách này bằng cách tô chọn vùng danh sách rồi gõ tên MyList trong hộp namebox. Bước 2 Trong 1 sheet khác mà bạn muốn dùng validation dựa vào danh sách MyList nói trên tô chọn vùng bạn cần mở menu Data - Validation chọn Allow là List source là MyList rồi nhấn OK. Bước 3 mở cửa sổ VBA của sheet đó copy đoạn code sau Comment 1 BEGIN TEMPLATE bbcode_code Code Private Sub Worksheet_Change ByVal Target As Range Dim strVal As String Dim strEntry As String On Error Resume Next strVal If Not strVal vbNullString Then strEntry Target False With MyList .Replace What strEntry _ Replacement LookAt xlWhole _ SearchOrder xlByRows MatchCase False .Sort Key1 .Range A1 Order1 xlAscending _ Header xlNo OrderCustom 1 MatchCase False _ Orientation xlTopToBottom . Range A1 . Range A65536 . End xlUp . Name MyL i st End With End If True On Error GoTo 0 End Sub Đóng cửa sổ VBA rồi quay về Excel. Thử chọn 1 mục trong validation sang 1 ô khác và xổ cái validation xuống bạn sẽ thấy mục vừa chọn xong không còn trong list nữa. Lưu ý trong code khi nói đến name MyList phải xác định rõ vì nếu không VBA sẽ cho rằng name này nằm chung sheet với sheet chứa code và sẽ không tìm thấy và báo lỗi. Comment 2 END TEMPLATE .