Cách tạo 2 Combo box liên kết có điều kiện

  • Thread starter Thread starter atudoho
  • Ngày gửi Ngày gửi
Liên hệ QC

atudoho

Thành viên mới
Tham gia
4/7/14
Bài viết
8
Được thích
0
Em chào các bác,
Mong các bác giúp đỡ em một vấn đề này ạ, e muốn tạo 2 Combo box thể hiện 2 khoảng giá trị khác nhau, hai giá trị này có liên kết với nhau, khi chọn combo box 1 thì combo box 2 sẽ hiện các giá trị tương ứng của combo box 1. E có nêu rõ trong file đính kèm, mong các bác giúp đỡ. E muốn ở Combo box 1 khi hiện sẽ lọc bỏ những tên trùng nhau chỉ hiển thị các tên 1 lần thôi ạ. E đang rất cần cái này cho công việc mong các bác giúp đỡ.
E xin chân thành cảm ơn ạ.
 

File đính kèm

Em chào các bác,
Mong các bác giúp đỡ em một vấn đề này ạ, e muốn tạo 2 Combo box thể hiện 2 khoảng giá trị khác nhau, hai giá trị này có liên kết với nhau, khi chọn combo box 1 thì combo box 2 sẽ hiện các giá trị tương ứng của combo box 1. E có nêu rõ trong file đính kèm, mong các bác giúp đỡ. E muốn ở Combo box 1 khi hiện sẽ lọc bỏ những tên trùng nhau chỉ hiển thị các tên 1 lần thôi ạ. E đang rất cần cái này cho công việc mong các bác giúp đỡ.
E xin chân thành cảm ơn ạ.

Thử dùng Validation xem có được không? Chưa hiểu ý làm đại hên thì trúng!!
 

File đính kèm

Thử dùng Validation xem có được không? Chưa hiểu ý làm đại hên thì trúng!!
Anh ơi người ta muốn dùng Combobox cho hoành tráng mà lị, nếu không thì vẽ 2 cái CB đó làm chi hả anh?
Chắc là anh không hên rồi.
 
Hee bác Quạnghai nói chí phải, e muốn dùng combo box cho đẹp và tiện, các bác ngâm cứu giúp e với..
 
Anh ơi người ta muốn dùng Combobox cho hoành tráng mà lị, nếu không thì vẽ 2 cái CB đó làm chi hả anh?
Chắc là anh không hên rồi.

Anh chưa hiểu ý tác giả vẽ 2 cái Combobox sử dụng vào mục đích gì? nên làm đại hên thì trúng, còn muốn hoành tráng thì chơi luôn UserForm để chọn và nhập liệu luôn.
 
Anh chưa hiểu ý tác giả vẽ 2 cái Combobox sử dụng vào mục đích gì? nên làm đại hên thì trúng, còn muốn hoành tráng thì chơi luôn UserForm để chọn và nhập liệu luôn.
UserForm thì nói gì nữa, chơi mấy cái Forms Crontrol trên sheet mới khó nhai chứ... ka ka ka
 
Em chào các bác,
Mong các bác giúp đỡ em một vấn đề này ạ, e muốn tạo 2 Combo box thể hiện 2 khoảng giá trị khác nhau, hai giá trị này có liên kết với nhau, khi chọn combo box 1 thì combo box 2 sẽ hiện các giá trị tương ứng của combo box 1. E có nêu rõ trong file đính kèm, mong các bác giúp đỡ. E muốn ở Combo box 1 khi hiện sẽ lọc bỏ những tên trùng nhau chỉ hiển thị các tên 1 lần thôi ạ. E đang rất cần cái này cho công việc mong các bác giúp đỡ.
E xin chân thành cảm ơn ạ.

Bài này có thể tạo List động bằng cách đặt name
Xem file
Lưu ý: Yêu cầu BẮT BUỘC là phải sort dữ liệu theo cột A nhé
 

File đính kèm

Tks bác e hiểu rồi, chỉ còn một vấn đề, bác xem có cách nào để combo box 1 hiện mỗi một tên chỉ 1 lần, ko bị lặp ko ạ? Tks bác.
 
Tks bác e hiểu rồi, chỉ còn một vấn đề, bác xem có cách nào để combo box 1 hiện mỗi một tên chỉ 1 lần, ko bị lặp ko ạ? Tks bác.

Đơn giản nhất là bạn dùng Advanced Filter lọc duy nhất cột A sang nơi khác đi rồi lấy vùng mới lọc này làm list cho ComboBox thứ nhất
Có điều phải sửa lại name đôi chút. Mời xem file
 

File đính kèm

Bác ơi thế mỗi lần cập nhật dữ liệu lại phải filter thủ công như thế ạ, có thể làm tự động được ko ah
 
Bác ơi thế mỗi lần cập nhật dữ liệu lại phải filter thủ công như thế ạ, có thể làm tự động được ko ah

Tự động đương nhiên có, nhưng cũng như ý kiến của mọi người: PHẢI DÙNG VBA. Bạn đồng ý thì ta tiếp tục, không thì đành chịu vậy
 
Tự nhiên lại đi sửa cái ComboBox của người ta?
Ngon thì viết code theo ComboBox Forms xem
Ẹc... Ẹc...
Anh đừng có thách em nha, bài này em có ngán đâu. Khai báo mảng toàn cục là xơi ngon lành. Sẽ nghiên cứu cho anh xem.

PS: Thành viên khác có rảnh tay vào code phụ bài này nha.
**********************************************
Và đây là kết quả sau 1 giờ đau khổ
PHP:
Option Explicit
Public nguon(1 To 65536, 1 To 2)
Sub AddDaTa()
Dim Data(), i As Long, k
With Sheet1
   .DropDowns("Drop Down 1").RemoveAllItems
   Data = .Range(.[A2], .[B65536].End(3)).Value
End With
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(Data)
      If Not .exists(Data(i, 1)) Then
         k = k + 1
         .Add Data(i, 1), k
         Sheet1.DropDowns("Drop Down 1").AddItem Data(i, 1)
         nguon(k, 1) = Data(i, 1)
         nguon(k, 2) = Data(i, 2)
      Else
         nguon(.item(Data(i, 1)), 2) = nguon(.item(Data(i, 1)), 2) & "," & Data(i, 2)
      End If
   Next
End With
End Sub
Sub Drop2()
Dim X, tam, item
X = Sheet1.DropDowns("Drop Down 1").Value
If nguon(X, 2) = "" Then
   AddDaTa
   Exit Sub
End If
Sheet1.DropDowns("Drop Down 2").RemoveAllItems
tam = Split(nguon(X, 2), ",")
For Each item In tam
   Sheet1.DropDowns("Drop Down 2").AddItem item
Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Quá tuyệt bác ơi hee thế là ngon rồi tks cả nhà!
 
Bác Quanghai cho e hỏi chút khi e đã chọn giá trị cho combobox 1 và 2, e dùng hàm index để hiển thị giá trị của combobox mà ko được? làm thế nào để lấy giá trị trong 2 combobox đó hả bác
 
Bác Quanghai cho e hỏi chút khi e đã chọn giá trị cho combobox 1 và 2, e dùng hàm index để hiển thị giá trị của combobox mà ko được? làm thế nào để lấy giá trị trong 2 combobox đó hả bác
Lỡ rồi cho tới bến luôn
 

File đính kèm

Anh đừng có thách em nha, bài này em có ngán đâu. Khai báo mảng toàn cục là xơi ngon lành. Sẽ nghiên cứu cho anh xem.

PS: Thành viên khác có rảnh tay vào code phụ bài này nha.
**********************************************
Và đây là kết quả sau 1 giờ đau khổ
PHP:
Option Explicit
Public nguon(1 To 65536, 1 To 2)
Sub AddDaTa()
Dim Data(), i As Long, k
With Sheet1
   .DropDowns("Drop Down 1").RemoveAllItems
   Data = .Range(.[A2], .[B65536].End(3)).Value
End With
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(Data)
      If Not .exists(Data(i, 1)) Then
         k = k + 1
         .Add Data(i, 1), k
         Sheet1.DropDowns("Drop Down 1").AddItem Data(i, 1)
         nguon(k, 1) = Data(i, 1)
         nguon(k, 2) = Data(i, 2)
      Else
         nguon(.item(Data(i, 1)), 2) = nguon(.item(Data(i, 1)), 2) & "," & Data(i, 2)
      End If
   Next
End With
End Sub
Sub Drop2()
Dim X, tam, item
X = Sheet1.DropDowns("Drop Down 1").Value
If nguon(X, 2) = "" Then
   AddDaTa
   Exit Sub
End If
Sheet1.DropDowns("Drop Down 2").RemoveAllItems
tam = Split(nguon(X, 2), ",")
For Each item In tam
   Sheet1.DropDowns("Drop Down 2").AddItem item
Next
End Sub
.
Bài này em đang tìm. Cám ơn anh quanghai rất nhiều.
Anh cho em hỏi nếu 2 cái combobox được thiết kế trên userform thì sửa code thế nào.
Rất mong được sự giúp đở của anh
 
Bài này em đang tìm. Cám ơn anh quanghai rất nhiều.
Anh cho em hỏi nếu 2 cái combobox được thiết kế trên userform thì sửa code thế nào.
Rất mong được sự giúp đở của anh

Theo tôi thì dùng UserForm sẽ đẹp đẻ và bắt mắt hơn, nếu dùng UserForm thì chơi kiểu khác.

Nhưng bạn phải đưa File với tiêu đề đầy đủ lên đây, chứ nữa vời tôi không chơi, lý do sửa còn khó hơn làm mới (lý do: làm mới chỉ làm 1 lần, sửa thì phải dòm trước ngó sau).
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom