Excel - Tạo danh sách thả xuống trên các ô nhất định

Vấn đề

Tôi muốn tạo một danh sách thả xuống từ dữ liệu trong Sheet2. Tôi đã thử các mã sau đây nhưng kết quả có vẻ không chính xác. Thay vì dữ liệu trong Trang tính 2 được liệt kê trong danh sách thả xuống, danh sách thả xuống chứa dữ liệu từ Trang tính 1 (là trang đích của tôi).

Ngoài ra, tôi muốn có danh sách thả xuống trên một số ô nhất định nơi tôi có thông tin về các ô trước đó, tức là danh sách thả xuống phải nằm trong Cột F của Trang tính 1, nơi có thông tin trên Cột E của Trang tính 1 và lặp lại cho đến khi kết thúc danh sách.

Dưới đây là tập tin tôi đang làm việc ở đây.

Dung dịch

Bạn tạo một danh sách xác nhận từ BÀI TẬP KHÁC đặt tên phạm vi cho danh sách xác nhận đó (trong trang 2)

và sử dụng nó như là công thức

Tôi đã cố gắng sửa đổi macro của bạn mà không làm phiền ngoại trừ thay đổi một hoặc hai dòng

Tôi đã đặt tên phạm vi là "rangename". bạn có thể thay đổi nó trong macro

Nếu cần chỉnh nó thêm chút nữa.

 Sub Dropdown () Dim x As Long, y As Long Dim objCell As Range Dim objDataRangeStart As Range Dim objDataRangeEnd As Range Dim rangename As String '>> Đặt Phạm vi cho Dữ liệu hợp lệ Đặt wsSourceList = Sheets ("Sheet2") ("Sheet1") Đặt objDataRangeStart = wsSourceList.Cells (1, 2) 'Phạm vi bắt đầu cho các mục nhập danh sách thả xuống Đặt objDataRangeEnd = wsSourceList.Cells (6, 2) ============= Với phạm vi trang tính ("Trang tính 2") (objDataRangeStart, objdatarangaeend) .Name = "rangename" Kết thúc với '=============== ====== '>> Đặt xác thực trên ô bắt buộc' Đặt objCell = wsDestList.Cells (8, 4) 'Vị trí của danh sách thả xuống' MsgBox objCell x = 4 y = 6 Đừng đặt objCell = wsDestList.Cells (x, y) 'Vị trí của danh sách thả xuống Với objCell.Validation .Delete' .Add Type: = xlValidateList, AlertStyle: = xlValidAlertStop, Toán tử: = xlB between, Formula1: = "=" & objData Địa chỉ '= ========================================== .Thêm loại: = xlValidateList, AlertStyle : = xlValidAlertStop, Toán tử: = _ xlB between, Formula1: = "= rangename" '================================ ================================ .IgnoreBlank = True .InCellDropdown = True .ErrorTitle = "Cảnh báo" .ErrorMessage = " Vui lòng chọn một giá trị từ danh sách có sẵn trong ô đã chọn. " .ShowError = Kết thúc thực sự với x = x + 1 'y = y + 1 Vòng lặp cho đến khi x = 51 Kết thúc phụ 

Cảm ơn venkat1926 cho mẹo này.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên