Mục lục
Tùy thuộc vào trường hợp, bạn có thể cần chọn nhiều giá trị trong danh sách thả xuống. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thực hiện nhiều lựa chọn trong danh sách thả xuống. Đối với phiên này, chúng tôi đang sử dụng Excel 2019, vui lòng sử dụng phiên bản ưa thích của bạn.
Trước khi đi sâu vào phiên, hãy tìm hiểu về tập dữ liệu làm cơ sở cho các ví dụ của chúng tôi.
Ở đây chúng tôi có một số thành phần văn phòng phẩm, sử dụng những thành phần này, chúng tôi sẽ tạo một danh sách thả xuống và chọn nhiều mục ở đó.
Lưu ý rằng đây là một tập dữ liệu đơn giản để giúp mọi thứ trở nên đơn giản . Trong một tình huống thực tế, bạn có thể gặp phải một tập dữ liệu phức tạp và lớn hơn nhiều.
Sách bài tập thực hành
Bạn có thể tải xuống sách bài tập thực hành từ liên kết bên dưới.
Tạo nhiều lựa chọn từ danh sách thả xuống.xlsm
Nhiều lựa chọn trong danh sách thả xuống
Trước hết, chúng ta cần tạo một danh sách thả xuống trên cơ sở văn phòng phẩm của chúng tôi. Hãy tạo nó một cách nhanh chóng. Vui lòng truy cập bài viết về cách tạo danh sách thả xuống.
Trong hộp thoại Xác thực dữ liệu , chọn loại dữ liệu LIST và chèn phạm vi ô của các mục.
B4:B11 là phạm vi chứa các thành phần văn phòng phẩm. Bây giờ bạn sẽ tìm thấy danh sách thả xuống.
Đọc thêm: Danh sách thả xuống Excel tùy thuộc vào lựa chọn
1. ChọnNhiều mục (Cho phép lựa chọn trùng lặp)
Danh sách thả xuống thông thường luôn chọn một mục duy nhất. Ở đây bạn có thể thấy, chúng tôi đã chọn Pen từ danh sách (hình ảnh bên dưới).
Bây giờ, nếu chúng tôi chọn một mục khác, giả sử Bút chì
thì nó sẽ thay thế giá trị trước đó. Chỉ Bút chì sẽ vẫn được chọn.
Để chọn nhiều mục, chúng tôi cần sử dụng mã VBA . Mở cửa sổ Microsoft Visual Basic for Applications (nhấn ALT + F11 để mở).
Bây giờ, nhấp đúp vào tên hoặc số trang tính mà bạn muốn chọn nhiều mục trong danh sách thả xuống. Bạn sẽ tìm thấy cửa sổ mã cho trang tính cụ thể đó.
Đây là cửa sổ mã cho Sheet2 trong sổ làm việc của chúng tôi (chúng tôi có trình đơn thả xuống danh sách trong trang tính này).
Sau khi cửa sổ mã mở ra, hãy chèn đoạn mã sau vào đó
1562
Lưu mã và bây giờ hãy thử chọn các giá trị trong danh sách thả xuống.
Sau khi chọn Bút chì , chúng ta sẽ chọn một mục khác Sổ tay . Và bạn có thể thấy, chúng tôi đã tìm thấy cả hai mục (hình ảnh bên dưới).
Mã này sẽ cho phép chúng tôi lặp lại lựa chọn. Giả sử nếu chúng ta chọn lại Ppencil ,
chúng ta sẽ tìm lại mục trong hộp lựa chọn.
Giải thích mã
Chúng tôi đã khai báo hai chuỗi Oldvalue và Giá trị mới .
Bạn có thể thấy chúng tôi đã tạo danh sách thả xuống trong ô D4 , đó là lý do tại sao địa chỉ mục tiêu của chúng tôi là D4 . Ngoài ra, chúng tôi đã kiểm tra lại xem ô có đang sử dụng xác thực dữ liệu hay không sử dụng Target.SpecialCells .
Khi một giá trị được chọn, chúng tôi đã tắt các sự kiện ( Application.EnableEvents = False
) để các thay đổi không xảy ra' t kích hoạt lại sự kiện. Sau đó lưu trữ mục đã chọn vào Giá trị mới .
Sau khi hoàn tác thay đổi, chúng tôi đã đặt giá trị vào Giá trị cũ . Sau đó kiểm tra xem Oldvalue có trống hay không. Nếu trống (có nghĩa là chỉ một giá trị được chọn), sau đó trả về Giá trị mới . Nếu không, hãy nối Giá trị cũ và Giá trị mới .
Trước khi kết thúc sự kiện đặt lại, để chúng tôi có thể thay đổi nếu cần.
Đọc thêm: Nhiều danh sách thả xuống phụ thuộc vào Excel VBA
2. Chọn nhiều mục từ danh sách thả xuống (Chỉ lựa chọn duy nhất)
Trong phần trước , chúng tôi đã thấy nhiều lựa chọn cho phép lặp lại. Nếu bạn không muốn điều đó, hãy làm theo phần này.
Để thuận tiện, chúng tôi đã sử dụng một trang tính riêng cho phần minh họa này. Lần này chúng ta đang ở Sheet3. Viết mã sau vào cửa sổ mã cho trang tính này.
7536
Có sự khác biệt nào so với mã trước đó không! Hãy quan sát kỹ hơn, bạn sẽ có thể phát hiện ra sự khác biệt nhỏ.
Ở đây chúng tôi đã sử dụng một hàm VBA có tên là INSTR . Hàm INSTR trả về vị trí xuất hiện đầu tiên của một chuỗi con trong một chuỗi. Truy cập bài viết INSTR này để biết thêm thông tin.
Sử dụng thao tác logic này với InStr(1, Oldvalue, Newvalue) = 0, chúng tôi đã kiểm tra xem các giá trị có được tìm thấy hay không. Nếu thao tác logic trả về TRUE (không tìm thấy sớm hơn) thì nó cho phép chọn mục và nối với giá trị trước đó.
Lưu mã và bây giờ hãy thử chọn một mục đã có đã được chọn.
Ở đây chúng ta đã chọn Bút chì , nếu muốn chọn lại thì không được. Nó không cho phép các giá trị trùng lặp.
Đọc thêm: Cách tạo danh sách thả xuống từ một trang tính khác trong Excel
3. Chọn Các mục trong Dòng mới
Cho đến nay, chúng tôi nhận thấy các mục được phân tách bằng dấu phẩy. Trong phần này, chúng tôi sẽ sắp xếp các mục đã chọn theo dòng mới.
Để đơn giản, chúng tôi sẽ hợp nhất một vài ô với ô D4 . Để làm điều đó, hãy chọn các ô bạn muốn hợp nhất và nhấp vào Hợp nhất & Căn giữa từ phần Căn chỉnh của tab Trang chủ .
Ô sẽ tăng thêm chiều cao.
Bây giờ, hãy xem mã để tách các mục thông qua dòng mới. Sử dụng mã sau
2532
Sự khác biệt duy nhất so với mã trước là lần này chúng tôi sử dụng vbNewLine ở giữa OldValue và NewValue .
vbNewLine cung cấp một dòng mới giữa các mục.
Bây giờ hãy chọn các mục.
Chúng tôi chọn một mục Pen được hiển thị trong hình trên. Bây giờ hãy chọn một phần tử khác.
Bạn sẽ thấy hai mục nằm trong các dòng khác nhau.
Ở đây chúng ta có hai mục các giá trị, nằm trong hai dòng khác nhau. Chọn một giá trị khác sẽ thêm giá trị đó vào một dòng khác. Mỗi giá trị sẽ nằm trong một dòng mới.
Lưu ý rằng nếu bạn muốn một dấu phân cách khác để phân tách các mục, hãy sử dụng dấu phân cách đó trong dấu ngoặc kép thay cho vbNewline .
Kết luận
Đó là tất cả cho ngày hôm nay. Chúng tôi đã liệt kê một số cách tiếp cận để thực hiện nhiều lựa chọn trong danh sách thả xuống. Hy vọng bạn sẽ tìm thấy điều này hữu ích. Hãy bình luận nếu bất cứ điều gì có vẻ khó hiểu. Hãy cho chúng tôi biết bất kỳ phương pháp nào khác mà chúng tôi đã bỏ lỡ tại đây.