Nhờ Anh Chị giúp đỡ em File làm List Box

Liên hệ QC

Hữu_Nghĩa

Thành viên mới
Tham gia
2/8/21
Bài viết
0
Được thích
3
Làm Thế Nào Để Tạo Danh Sách Thả Xuống Với Nhiều Hộp Kiểm Trong Excel phụ thuộc 1 biến khác trong VBA
ví dụ : khi mình chọn Cell Tên mẫu thì có 4 mục để chọn, tiếp khi chọn Cell Phương pháp thì sẽ link theo tên có trong mục Tên mẫu sẽ xổ xuống nhìu ô để chọn.
Ví dụ rõ hơn là: khi chọnô Tên mẫu là Vật liệu_RoHS thìô phương pháp sẽ xổ xuống để chọn được 2 hay nhìu dòng.
file 1.JPG
file 2.JPG
 

File đính kèm

  • FILE-NHÂP_31.xlsm
    24.9 KB · Đọc: 7
Bạn xem file nhé !

Đây là code VBA sử dụng . Mình đặt 1 name mới là LstDV
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
Dim fStr As String, fRng As Range, AddressOfName As String
fStr = Sheet1.Range("C2").Value
With Sheet3
Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
If Not fRng Is Nothing Then
AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
Sheet1.[C3].ClearContents
Else
Exit Sub
End If
End With
End If
End Sub
 

File đính kèm

  • FILE-NHÂP_31.xlsm
    25.8 KB · Đọc: 14
Làm Thế Nào Để Tạo Danh Sách Thả Xuống Với Nhiều Hộp Kiểm Trong Excel phụ thuộc 1 biến khác trong VBA
ví dụ : khi mình chọn Cell Tên mẫu thì có 4 mục để chọn, tiếp khi chọn Cell Phương pháp thì sẽ link theo tên có trong mục Tên mẫu sẽ xổ xuống nhìu ô để chọn.
Ví dụ rõ hơn là: khi chọnô Tên mẫu là Vật liệu_RoHS thìô phương pháp sẽ xổ xuống để chọn được 2 hay nhìu dòng.
View attachment 263475
View attachment 263477
Thêm một cách khác cho bạn rộng đường lựa chọn
 

File đính kèm

  • FILE-NHÂP_31.xlsm
    25.5 KB · Đọc: 17
Nếu là mình thì chỉ cần thêm 1 Validation nữa là được rồi
 

File đính kèm

  • GPE.rar
    21 KB · Đọc: 7
cảm ơn Anh nhiều lắm ạ, hay qua Anh, nhưng Anh ơi làm sao trong ô Phương pháp mình có thể tick chọn được 2 dòng để nó hiển thị như vậy ạhinh 3.JPG
Bài đã được tự động gộp:

Thêm một cách khác cho bạn rộng đường lựa chọn
cảm ơn Bạn nhiều nhé. bạn ơi giúp mình này tí với, làm sao trong ô Phương pháp mình chọn được nhiều dòng ( ý là chọn được nhìu có dấu tick ak)4.JPG
 
Lần chỉnh sửa cuối:
cảm ơn Anh nhiều lắm ạ, hay qua Anh, nhưng Anh ơi làm sao trong ô Phương pháp mình có thể tick chọn được 2 dòng để nó hiển thị như vậy ạView attachment 263497
Bài đã được tự động gộp:


cảm ơn Bạn nhiều nhé. bạn ơi giúp mình này tí với, làm sao trong ô Phương pháp mình chọn được nhiều dòng ( ý là chọn được nhìu có dấu tick ak)View attachment 263498

bạn thay code sau trong sheet1
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
    Dim Arr As Variant, fStr As String, fRng As Range, AddressOfName As String
    fStr = Sheet1.Range("C2").Value
    With Sheet3
        Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
        If Not fRng Is Nothing Then
           AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
           ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
           Sheet1.[C3].ClearContents
           Sheet1.ListBox1.Visible = True
           Sheet1.ListBox1.ListFillRange = AddressOfName
        Else
        Sheet1.ListBox1.Visible = False
           Exit Sub
        End If
    End With
    Else
        Sheet1.ListBox1.Visible = False
End If
End Sub
Private Sub ListBox1_Click()
    Sheet1.Range("C3") = Sheet1.Range("C3") & Chr(10) & Sheet1.ListBox1.Value
    Sheet1.ListBox1.Visible = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Sheet1.ListBox1.Visible = False
End Sub
Từ đây bạn có thể chọn nhiều dòng và ô C3 cũng được,
muốn Listbox ẩn đi thì nhấn đúp chuột vào listbox và gõ Enter
 
Lần chỉnh sửa cuối:
bạn thay code sau trong sheet1
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C2]) Is Nothing Then
    Dim Arr As Variant, fStr As String, fRng As Range, AddressOfName As String
    fStr = Sheet1.Range("C2").Value
    With Sheet3
        Set fRng = .Range(.[B2], .[B2].End(xlToRight)).Find(fStr, , xlFormulas, xlWhole)
        If Not fRng Is Nothing Then
           AddressOfName = "='" & .Name & "'!" & .Range(fRng.Offset(1), fRng.End(xlDown)).Address
           ThisWorkbook.names.Item("LstDV").RefersTo = AddressOfName
           Sheet1.[C3].ClearContents
           Sheet1.ListBox1.Visible = True
           Sheet1.ListBox1.ListFillRange = AddressOfName
        Else
        Sheet1.ListBox1.Visible = False
           Exit Sub
        End If
    End With
    Else
        Sheet1.ListBox1.Visible = False
End If
End Sub
Private Sub ListBox1_Click()
    Sheet1.Range("C3") = Sheet1.Range("C3") & Chr(10) & Sheet1.ListBox1.Value
    Sheet1.ListBox1.Visible = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then Sheet1.ListBox1.Visible = False
End Sub
Từ đây bạn có thể chọn nhiều dòng và ô C3 cũng được,
muốn Listbox ẩn đi thì nhấn đúp chuột vào listbox và gõ Enter
hi. cảm ơn bạn nhiều nhé. chúc sức khỏe bạn.Thank
 
Web KT
Back
Top Bottom